From 5e32fad59e3fb1ea4d6a348e15ee636fec5fb18f Mon Sep 17 00:00:00 2001 From: Alexander Zinchuk Date: Fri, 19 Sep 2025 14:25:30 +0200 Subject: [PATCH] Replace Electron with Tauri --- .eslintignore | 19 + .github/workflows/package-and-publish.yml | 400 +- README.md | 71 - deploy/prepareTauriConfig.js | 25 + deploy/tauri_create_dmg.sh | 13 + docs/TAURI.md | 184 + eslint.config.mjs | 1 - package-lock.json | 7554 +++++------------ package.json | 74 +- public/icon-electron-macos.icns | Bin 178036 -> 0 bytes public/icon-electron-windows.ico | Bin 119535 -> 0 bytes public/version.txt | 2 +- src/api/gramjs/methods/client.ts | 4 +- src/api/gramjs/methods/init.ts | 6 +- src/api/gramjs/worker/connector.ts | 7 +- src/api/gramjs/worker/worker.ts | 17 +- src/assets/localization/fallback.strings | 2 +- src/components/App.tsx | 3 + src/components/auth/Auth.scss | 17 +- src/components/auth/Auth.tsx | 16 +- src/components/auth/CountryCodeInput.tsx | 2 + src/components/calls/ActiveCallHeader.tsx | 5 +- .../calls/group/GroupCall.module.scss | 8 +- .../calls/phone/PhoneCall.module.scss | 4 +- src/components/common/AnimatedSticker.tsx | 4 +- src/components/common/PasswordForm.tsx | 2 + src/components/common/SafeLink.tsx | 4 +- src/components/common/helpers/renderText.tsx | 7 +- .../common/hooks/useAnimatedEmoji.ts | 4 +- src/components/left/LeftColumn.scss | 10 +- src/components/left/LeftColumn.tsx | 5 - src/components/left/main/ChatTags.module.scss | 2 +- src/components/left/main/LeftMain.tsx | 57 +- src/components/left/main/LeftMainHeader.scss | 2 +- src/components/left/main/LeftMainHeader.tsx | 33 +- .../left/main/LeftSideMenuItems.tsx | 6 +- .../left/settings/SettingsExperimental.tsx | 57 +- .../left/settings/SettingsGeneral.tsx | 22 +- src/components/main/Main.tsx | 45 +- src/components/mediaViewer/MediaViewer.scss | 8 +- src/components/mediaViewer/MediaViewer.tsx | 12 +- .../mediaViewer/SeekLine.module.scss | 2 +- .../middle/MiddleColumn.module.scss | 4 - src/components/middle/MiddleColumn.tsx | 10 +- src/components/middle/MiddleHeader.scss | 8 +- src/components/middle/MiddleHeader.tsx | 11 +- src/components/middle/MobileSearch.scss | 92 + .../middle/composer/EmojiButton.tsx | 3 +- .../middle/composer/MessageInput.tsx | 2 + .../middle/composer/TextFormatter.tsx | 2 + .../middle/message/ActionMessage.tsx | 5 +- src/components/middle/message/Message.tsx | 5 +- .../middle/message/_message-content.scss | 7 +- .../middle/search/MiddleSearch.module.scss | 4 +- src/components/right/RightHeader.scss | 12 +- src/components/right/RightHeader.tsx | 10 +- src/components/ui/InputText.tsx | 3 +- src/components/ui/ListItem.tsx | 20 +- src/components/ui/SearchInput.tsx | 3 +- src/components/ui/TextArea.tsx | 2 + src/components/ui/Transition.tsx | 3 + src/config.ts | 4 - src/electron/autoUpdates.ts | 104 - src/electron/config.js | 87 - src/electron/deeplink.ts | 70 - src/electron/localStorage.ts | 43 - src/electron/main.ts | 36 - src/electron/preload.ts | 37 - src/electron/tray.ts | 99 - src/electron/utils.ts | 101 - src/electron/window.ts | 252 - src/electron/windowState.ts | 203 - src/global/actions/ui/chats.ts | 7 +- src/global/actions/ui/initial.ts | 8 +- src/global/actions/ui/misc.ts | 17 +- src/global/initialState.ts | 1 - src/global/types/actions.ts | 1 - src/global/types/globalState.ts | 1 - src/hooks/scroll/useTopOverscroll.tsx | 3 +- src/hooks/tauri/useTauriDrag.ts | 35 + src/hooks/tauri/useTauriEvent.ts | 30 + src/hooks/useChatContextActions.ts | 5 +- src/hooks/useElectronDrag.ts | 73 - src/hooks/useLongPress.ts | 11 +- src/hooks/window/useFullscreen.ts | 21 +- src/index.tsx | 10 +- src/lib/gramjs/client/TelegramClient.ts | 3 +- src/lib/gramjs/tl/api.d.ts | 2 +- src/serviceWorker/index.ts | 4 +- src/styles/_variables.scss | 1 + src/styles/index.scss | 3 +- src/types/electron.ts | 48 - src/types/language.d.ts | 1 + src/types/tauri.ts | 21 + src/util/appBadge.ts | 8 +- src/util/browser/globalEnvironment.ts | 4 + src/util/browser/windowEnvironment.ts | 4 +- src/util/cacheApi.ts | 9 +- src/util/establishMultitabRole.ts | 6 + src/util/mediaLoader.ts | 6 +- src/util/multiaccount.ts | 15 +- src/util/notifications.tsx | 24 +- src/util/tauri/initTauriApi.ts | 37 + src/util/tauri/setupTauriListeners.ts | 89 + src/util/updatePageTitle.ts | 8 +- src/util/websync.ts | 8 +- tauri/Cargo.lock | 6968 +++++++++++++++ tauri/Cargo.toml | 55 + tauri/Info.plist | 23 + tauri/build.rs | 3 + tauri/capabilities/default.json | 15 + .../entitlements.mac.plist | 2 + tauri/fonts/Roboto-Bold.ttf | Bin 0 -> 146768 bytes tauri/icons/128x128.png | Bin 0 -> 10082 bytes tauri/icons/128x128@2x.png | Bin 0 -> 26509 bytes tauri/icons/32x32.png | Bin 0 -> 2045 bytes tauri/icons/64x64.png | Bin 0 -> 4473 bytes tauri/icons/icon.icns | Bin 0 -> 366838 bytes tauri/icons/icon.ico | Bin 0 -> 39914 bytes tauri/icons/icon.png | Bin 0 -> 28162 bytes tauri/icons/macos/128x128.png | Bin 0 -> 7093 bytes tauri/icons/macos/128x128@2x.png | Bin 0 -> 16413 bytes tauri/icons/macos/32x32.png | Bin 0 -> 1711 bytes tauri/icons/macos/64x64.png | Bin 0 -> 3464 bytes tauri/icons/macos/icon.icns | Bin 0 -> 234896 bytes tauri/icons/macos/icon.ico | Bin 0 -> 26777 bytes tauri/icons/macos/icon.png | Bin 0 -> 23371 bytes tauri/icons/tray-macos.png | Bin 0 -> 632 bytes .../images/background-dmg.tiff | Bin tauri/rustfmt.toml | 1 + tauri/src/deeplink.rs | 50 + tauri/src/lib.rs | 363 + tauri/src/mac.rs | 365 + tauri/src/main.rs | 6 + tauri/src/tray/badge.rs | 195 + tauri/src/tray/mod.rs | 199 + tauri/src/window.rs | 11 + tauri/tauri.conf.json | 59 + tauri/tauri.macos.conf.json | 12 + tsconfig.json | 4 +- webpack-electron.config.ts | 60 - webpack.config.ts | 13 +- 142 files changed, 11833 insertions(+), 7053 deletions(-) create mode 100644 .eslintignore create mode 100644 deploy/prepareTauriConfig.js create mode 100755 deploy/tauri_create_dmg.sh create mode 100644 docs/TAURI.md delete mode 100644 public/icon-electron-macos.icns delete mode 100644 public/icon-electron-windows.ico create mode 100644 src/components/middle/MobileSearch.scss delete mode 100644 src/electron/autoUpdates.ts delete mode 100644 src/electron/config.js delete mode 100644 src/electron/deeplink.ts delete mode 100644 src/electron/localStorage.ts delete mode 100644 src/electron/main.ts delete mode 100644 src/electron/preload.ts delete mode 100644 src/electron/tray.ts delete mode 100644 src/electron/utils.ts delete mode 100644 src/electron/window.ts delete mode 100644 src/electron/windowState.ts create mode 100644 src/hooks/tauri/useTauriDrag.ts create mode 100644 src/hooks/tauri/useTauriEvent.ts delete mode 100644 src/hooks/useElectronDrag.ts delete mode 100644 src/types/electron.ts create mode 100644 src/types/tauri.ts create mode 100644 src/util/tauri/initTauriApi.ts create mode 100644 src/util/tauri/setupTauriListeners.ts create mode 100644 tauri/Cargo.lock create mode 100644 tauri/Cargo.toml create mode 100644 tauri/Info.plist create mode 100644 tauri/build.rs create mode 100644 tauri/capabilities/default.json rename public/electron-entitlements.mac.plist => tauri/entitlements.mac.plist (91%) create mode 100644 tauri/fonts/Roboto-Bold.ttf create mode 100644 tauri/icons/128x128.png create mode 100644 tauri/icons/128x128@2x.png create mode 100644 tauri/icons/32x32.png create mode 100644 tauri/icons/64x64.png create mode 100644 tauri/icons/icon.icns create mode 100644 tauri/icons/icon.ico create mode 100644 tauri/icons/icon.png create mode 100644 tauri/icons/macos/128x128.png create mode 100644 tauri/icons/macos/128x128@2x.png create mode 100644 tauri/icons/macos/32x32.png create mode 100644 tauri/icons/macos/64x64.png create mode 100644 tauri/icons/macos/icon.icns create mode 100644 tauri/icons/macos/icon.ico create mode 100644 tauri/icons/macos/icon.png create mode 100644 tauri/icons/tray-macos.png rename public/background-electron-dmg.tiff => tauri/images/background-dmg.tiff (100%) create mode 100644 tauri/rustfmt.toml create mode 100644 tauri/src/deeplink.rs create mode 100644 tauri/src/lib.rs create mode 100644 tauri/src/mac.rs create mode 100644 tauri/src/main.rs create mode 100644 tauri/src/tray/badge.rs create mode 100644 tauri/src/tray/mod.rs create mode 100644 tauri/src/window.rs create mode 100644 tauri/tauri.conf.json create mode 100644 tauri/tauri.macos.conf.json delete mode 100644 webpack-electron.config.ts diff --git a/.eslintignore b/.eslintignore new file mode 100644 index 000000000..1f9c71e48 --- /dev/null +++ b/.eslintignore @@ -0,0 +1,19 @@ +src/lib/rlottie/rlottie-wasm.js +src/lib/video-preview/polyfill +src/lib/fasttextweb/fasttext-wasm.js + +src/lib/gramjs/tl/types-generator/template.ts +src/lib/gramjs/tl/api.d.ts +src/lib/gramjs/tl/apiTl.ts +src/lib/gramjs/tl/schemaTl.ts + +src/lib/lovely-chart + +src/lib/music-metadata-browser + +jest.config.js +src/lib/secret-sauce/ +playwright.config.ts + +dist +public diff --git a/.github/workflows/package-and-publish.yml b/.github/workflows/package-and-publish.yml index 122a5948f..d49221d8e 100644 --- a/.github/workflows/package-and-publish.yml +++ b/.github/workflows/package-and-publish.yml @@ -4,23 +4,135 @@ # "publish" - Send a package to corresponding store and GitHub release page. # "release" - build + package + publish # -# Jobs in this workflow will skip the "publish" step when `PUBLISH_REPO` is not set. +# Jobs in this workflow will skip the "publish" step when `SHOULD_PUBLISH` is not set. name: Package and publish on: workflow_dispatch: + inputs: + forceRelease: + description: 'Force production build' + required: false + default: false + type: boolean push: branches: - master env: - APP_NAME: Telegram A + IS_ON_MASTER: ${{ github.ref == 'refs/heads/master' }} + SHOULD_PUBLISH: ${{ github.ref == 'refs/heads/master' && vars.PUBLISH_REPO || '' }} + PUBLISH_REPO: ${{ vars.PUBLISH_REPO }} + GH_TOKEN: ${{ secrets.GH_TOKEN }} + UPDATER_GIST_URL: ${{ secrets.UPDATER_GIST_URL }} + UPDATER_GIST_ID: ${{ secrets.UPDATER_GIST_ID }} jobs: - electron-release: - name: Build, package and publish Electron - runs-on: macOS-latest + get-version: + runs-on: ubuntu-latest + outputs: + package-version: ${{ steps.extract-version.outputs.package-version }} + tag-name: ${{ steps.extract-version.outputs.tag-name }} + should-publish: ${{ steps.extract-version.outputs.should-publish }} + release-name: ${{ steps.extract-version.outputs.release-name }} + steps: + - uses: actions/checkout@v4 + + - name: Extract version and tag + id: extract-version + run: | + PACKAGE_VERSION=$(grep -m1 '^version' tauri/Cargo.toml | sed -E 's/.*"([^"]+)".*/\1/') + TAG_NAME="Tauri v${PACKAGE_VERSION}" + echo "package-version=$PACKAGE_VERSION" >> $GITHUB_OUTPUT + echo "tag-name=$TAG_NAME" >> $GITHUB_OUTPUT + echo "should-publish=$SHOULD_PUBLISH" >> $GITHUB_OUTPUT + echo "Extracted version: $PACKAGE_VERSION" + echo "Generated tag: $TAG_NAME" + echo "Generated release name: $RELEASE_NAME" + + check-version: + runs-on: ubuntu-latest + needs: get-version + outputs: + should-skip: ${{ steps.check-release.outputs.should-skip }} + steps: + - name: Check if release already exists + id: check-release + env: + PACKAGE_VERSION: ${{ needs.get-version.outputs.package-version }} + TAG_NAME: ${{ needs.get-version.outputs.tag-name }} + run: | + # For non-master branches or when publishing is disabled, always continue + if [ -z "$SHOULD_PUBLISH" ]; then + echo "🚧 Publishing disabled (non-master branch or PUBLISH_REPO not set)" + echo "should-skip=false" >> $GITHUB_OUTPUT + exit 0 + fi + + echo "Checking if release already exists for tag: $TAG_NAME" + + RESPONSE=$(curl -s -H "Authorization: token $GH_TOKEN" \ + "https://api.github.com/repos/$PUBLISH_REPO/releases/tags/$TAG_NAME") + + if echo "$RESPONSE" | jq -e '.tag_name' > /dev/null; then + IS_DRAFT=$(echo "$RESPONSE" | jq -r '.draft') + if [ "$IS_DRAFT" = "false" ]; then + echo "✅ Published release already exists for version $PACKAGE_VERSION" + echo "should-skip=true" >> $GITHUB_OUTPUT + else + echo "📝 Draft release exists for version $PACKAGE_VERSION, will continue" + echo "should-skip=false" >> $GITHUB_OUTPUT + fi + else + echo "🆕 No release found for version $PACKAGE_VERSION, will create new release" + echo "should-skip=false" >> $GITHUB_OUTPUT + fi + + create-release: + runs-on: ubuntu-latest + needs: [get-version, check-version] + if: needs.get-version.outputs.should-publish != '' && needs.check-version.outputs.should-skip != 'true' + outputs: + releaseId: ${{ steps.create-release.outputs.releaseId }} + steps: + - name: Create draft release + id: create-release + env: + PACKAGE_VERSION: ${{ needs.get-version.outputs.package-version }} + TAG_NAME: ${{ needs.get-version.outputs.tag-name }} + run: | + echo "Creating draft release for tag: $TAG_NAME" + echo "Repository: $PUBLISH_REPO" + RESPONSE=$(curl -X POST \ + -H "Authorization: token $GH_TOKEN" \ + -d '{"tag_name": "'"$TAG_NAME"'", "name": "'"$TAG_NAME"'", "draft": true}' \ + "https://api.github.com/repos/$PUBLISH_REPO/releases") + RELEASE_ID=$(echo "$RESPONSE" | jq -r '.id') + echo "Extracted Release ID: $RELEASE_ID" + if [ "$RELEASE_ID" = "null" ]; then + echo "Error: Failed to create release. Response was: $RESPONSE" + exit 1 + fi + echo "releaseId=$RELEASE_ID" >> $GITHUB_OUTPUT + + package-tauri: + name: Build, package and publish Tauri + needs: [get-version, check-version, create-release] + if: ${{ always() && needs.check-version.outputs.should-skip != 'true' }} + permissions: + contents: write + strategy: + fail-fast: false + matrix: + settings: + - platform: "macos-latest" + args: "--target aarch64-apple-darwin" + - platform: "macos-latest" + args: "--target x86_64-apple-darwin" + - platform: 'windows-latest' + args: '' + runs-on: ${{ matrix.settings.platform }} steps: - name: Checkout uses: actions/checkout@v4 @@ -30,6 +142,17 @@ jobs: with: node-version: ${{ vars.NODE_VERSION }} + - name: Install Rust stable + uses: dtolnay/rust-toolchain@stable + with: + targets: ${{ matrix.settings.platform == 'macos-latest' && 'aarch64-apple-darwin,x86_64-apple-darwin' || '' }} + + - name: Install Tauri dependencies (ubuntu only) + if: matrix.settings.platform == 'ubuntu-22.04' + run: | + sudo apt-get update + sudo apt-get install -y libgtk-3-dev libwebkit2gtk-4.1-dev libappindicator3-dev librsvg2-dev patchelf + - name: Cache node modules id: npm-cache uses: actions/cache@v4 @@ -41,89 +164,106 @@ jobs: - name: Install dependencies if: steps.npm-cache.outputs.cache-hit != 'true' - run: npm ci --include=dev # Hack: install `electron-drag-click` as a dev dependency, so build happens only on macOS + run: npm ci - - name: Import MacOS signing certificate - env: - APPLE_CERTIFICATE_BASE64: ${{ secrets.APPLE_CERTIFICATE_BASE64 }} - APPLE_CERTIFICATE_PASSWORD: ${{ secrets.APPLE_CERTIFICATE_PASSWORD }} + - name: Extract repository owner and name + id: repository-info + if: needs.get-version.outputs.should-publish != '' + shell: bash run: | - KEY_CHAIN=build.keychain - CERTIFICATE_P12=certificate.p12 - echo "$APPLE_CERTIFICATE_BASE64" | base64 --decode > $CERTIFICATE_P12 - security create-keychain -p actions $KEY_CHAIN - security default-keychain -s $KEY_CHAIN - security unlock-keychain -p actions $KEY_CHAIN - security import $CERTIFICATE_P12 -k $KEY_CHAIN -P $APPLE_CERTIFICATE_PASSWORD -T /usr/bin/codesign - security set-key-partition-list -S apple-tool:,apple:,codesign: -s -k actions $KEY_CHAIN - security find-identity -v -p codesigning $KEY_CHAIN + echo "owner=${PUBLISH_REPO%%/*}" >> $GITHUB_OUTPUT + echo "repo=${PUBLISH_REPO#*/}" >> $GITHUB_OUTPUT - - name: Get branch name for current workflow run - id: branch-name - uses: tj-actions/branch-names@v8 + - name: Define Tauri configuration overrides + id: config-overrides + uses: actions/github-script@v7 + env: + BASE_URL: ${{ vars.BASE_URL }} + UPDATER_PUBLIC_KEY: ${{ secrets.UPDATER_PUBLIC_KEY }} + WITH_UPDATER: ${{ needs.get-version.outputs.should-publish != '' && 'true' || 'false' }} + with: + script: | + const workspacePath = process.env.GITHUB_WORKSPACE.replace(/\\/g, '/'); + const moduleUrl = `file:///${workspacePath}/deploy/prepareTauriConfig.js`; + const { default: prepareTauriConfig } = await import(moduleUrl) + const config = prepareTauriConfig(); + + const configJson = JSON.stringify(config); + console.log(configJson); + + core.setOutput("json", configJson); - name: Build, package and publish + uses: tauri-apps/tauri-action@v0 + id: build-tauri env: - TELEGRAM_API_ID: ${{ secrets.TELEGRAM_API_ID }} - TELEGRAM_API_HASH: ${{ secrets.TELEGRAM_API_HASH }} - + APPLE_CERTIFICATE: ${{ secrets.APPLE_CERTIFICATE_BASE64 }} + APPLE_CERTIFICATE_PASSWORD: ${{ secrets.APPLE_CERTIFICATE_PASSWORD }} + APPLE_SIGNING_IDENTITY: ${{ secrets.APPLE_SIGNING_IDENTITY }} APPLE_ID: ${{ secrets.APPLE_ID }} + APPLE_PASSWORD: ${{ secrets.APPLE_APP_SPECIFIC_PASSWORD }} APPLE_TEAM_ID: ${{ secrets.APPLE_TEAM_ID }} - APPLE_APP_SPECIFIC_PASSWORD: ${{ secrets.APPLE_APP_SPECIFIC_PASSWORD }} - - GH_TOKEN: ${{ secrets.GH_TOKEN }} - PUBLISH_REPO: ${{ vars.PUBLISH_REPO }} + GITHUB_TOKEN: ${{ env.GH_TOKEN }} BASE_URL: ${{ vars.BASE_URL }} - IS_PREVIEW: ${{ steps.branch-name.outputs.current_branch != 'master' }} - run: | - if [ -z "$PUBLISH_REPO" ]; then - npm run electron:package:staging - else - npm run electron:release:production - fi - - - uses: actions/upload-artifact@v4 + TAURI_SIGNING_PRIVATE_KEY: ${{ secrets.UPDATER_PRIVATE_KEY }} + TAURI_SIGNING_PRIVATE_KEY_PASSWORD: ${{ secrets.UPDATER_PRIVATE_KEY_PASSWORD }} + WITH_UPDATER: ${{ needs.get-version.outputs.should-publish != '' && 'true' || 'false' }} with: - name: ${{ env.APP_NAME }}-x64.dmg - path: dist-electron/${{ env.APP_NAME }}-x64.dmg + args: "-c ${{ steps.config-overrides.outputs.json }} ${{ matrix.settings.args }}" + includeDebug: ${{ needs.get-version.outputs.should-publish == '' && !inputs.forceRelease }} + includeRelease: ${{ needs.get-version.outputs.should-publish != '' || inputs.forceRelease }} + releaseId: ${{ needs.create-release.outputs.releaseId }} + owner: ${{ steps.repository-info.outputs.owner }} + repo: ${{ steps.repository-info.outputs.repo }} - - uses: actions/upload-artifact@v4 - with: - name: ${{ env.APP_NAME }}-arm64.dmg - path: dist-electron/${{ env.APP_NAME }}-arm64.dmg - - - uses: actions/upload-artifact@v4 - with: - name: ${{ env.APP_NAME }}-x86_64.AppImage - path: dist-electron/${{ env.APP_NAME }}-x86_64.AppImage - - - uses: actions/upload-artifact@v4 - with: - name: ${{ env.APP_NAME }}-x64.exe - path: dist-electron/${{ env.APP_NAME }}-x64.exe - - electron-sign-for-windows: - name: Sign and re-publish Windows package - needs: electron-release - runs-on: windows-latest - if: vars.PUBLISH_REPO != '' - env: - GH_TOKEN: ${{ secrets.GH_TOKEN }} - PUBLISH_REPO: ${{ vars.PUBLISH_REPO }} - steps: - - name: Checkout - uses: actions/checkout@v4 - - - name: Setup certificate - shell: bash - run: echo "${{ secrets.SM_CLIENT_CERT_FILE_B64 }}" | base64 --decode > /d/Certificate_pkcs12.p12 - - - name: Set environment variables - id: variables + - name: Get file info + id: file-info shell: bash run: | + FULL_PATH=$(echo "${{ fromJSON(steps.build-tauri.outputs.artifactPaths)[0] }}") + FILENAME=$(basename "$FULL_PATH") + NAME="${FILENAME%.*}" + FILE_PATH=$(readlink -f "$(dirname "$FULL_PATH")") + ARCHITECTURE=$(echo "${{ matrix.settings.args }}" | grep -oE 'x86_64|aarch64' || echo "") + echo "name=$NAME" >> $GITHUB_OUTPUT + echo "filename=$FILENAME" >> $GITHUB_OUTPUT + echo "architecture=$ARCHITECTURE" >> $GITHUB_OUTPUT + echo "path=$FILE_PATH" >> $GITHUB_OUTPUT + + # MacOS release + - name: Rebuild DMG with custom background (MacOS) + if: matrix.settings.platform == 'macos-latest' + run: | + brew install create-dmg + ./deploy/tauri_create_dmg.sh "${{ steps.file-info.outputs.path }}/${{ steps.file-info.outputs.name }}.dmg" "${{ steps.file-info.outputs.path }}/${{ steps.file-info.outputs.filename }}" + + - name: Upload release asset (MacOS) + if: matrix.settings.platform == 'macos-latest' && needs.get-version.outputs.should-publish != '' + shell: bash + run: | + SANITIZED_FILENAME=$(echo "${{ steps.file-info.outputs.name }}" | sed 's/ /./g') + PUBLISH_FILE_NAME="$SANITIZED_FILENAME-${{ steps.file-info.outputs.architecture }}.dmg" + FILE_PATH="${{ steps.file-info.outputs.path }}/${{ steps.file-info.outputs.name }}.dmg" + RELEASE_ID="${{ needs.create-release.outputs.releaseId }}" + curl -X POST -H "Authorization: Bearer $GH_TOKEN" \ + -H "Content-Type: application/octet-stream" \ + --data-binary "@$FILE_PATH" \ + "https://uploads.github.com/repos/$PUBLISH_REPO/releases/$RELEASE_ID/assets?name=$PUBLISH_FILE_NAME" + + - name: Upload artifact (MacOS) + if: matrix.settings.platform == 'macos-latest' + uses: actions/upload-artifact@v4 + with: + name: ${{ steps.file-info.outputs.name }}-${{ steps.file-info.outputs.architecture }}.dmg + path: ${{ steps.file-info.outputs.path }}/${{ steps.file-info.outputs.name }}.dmg + + # Windows release + - name: Setup certificate and set environment variables (Windows) + if: matrix.settings.platform == 'windows-latest' + shell: bash + run: | + echo "${{ secrets.SM_CLIENT_CERT_FILE_B64 }}" | base64 --decode > /d/Certificate_pkcs12.p12 echo "version=${GITHUB_REF#refs/tags/v}" >> $GITHUB_OUTPUT - echo "FILE_NAME=${{ env.APP_NAME }}-x64.exe" >> "$GITHUB_ENV" echo "SM_HOST=${{ secrets.SM_HOST }}" >> "$GITHUB_ENV" echo "SM_API_KEY=${{ secrets.SM_API_KEY }}" >> "$GITHUB_ENV" echo "SM_CLIENT_CERT_FILE=D:\\Certificate_pkcs12.p12" >> "$GITHUB_ENV" @@ -132,9 +272,12 @@ jobs: echo "C:\Program Files (x86)\Microsoft SDKs\Windows\v10.0A\bin\NETFX 4.8 Tools" >> $GITHUB_PATH echo "C:\Program Files\DigiCert\DigiCert One Signing Manager Tools" >> $GITHUB_PATH - - name: Setup SSM KSP + - name: Setup SSM KSP and sign package (Windows) + if: matrix.settings.platform == 'windows-latest' env: SM_API_KEY: ${{ secrets.SM_API_KEY }} + KEYPAIR_ALIAS: ${{ secrets.KEYPAIR_ALIAS }} + FILE_PATH: ${{ steps.file-info.outputs.path }}/${{ steps.file-info.outputs.filename }} shell: cmd run: | curl.exe -X GET https://one.digicert.com/signingmanager/api-ui/v1/releases/smtools-windows-x64.msi/download -H "x-api-key:%SM_API_KEY%" -o smtools.msi @@ -143,57 +286,74 @@ jobs: smctl.exe keypair ls C:\Windows\System32\certutil.exe -csp "DigiCert Signing Manager KSP" -key -user smksp_cert_sync.exe + smctl.exe sign --keypair-alias=%KEYPAIR_ALIAS% --input "%FILE_PATH%" - - name: Download Windows package - id: download-artifact - uses: actions/download-artifact@v4 - with: - name: ${{ env.FILE_NAME }} - - - name: Sign package - env: - KEYPAIR_ALIAS: ${{ secrets.KEYPAIR_ALIAS }} - FILE_PATH: ${{ steps.download-artifact.outputs.download-path }} - shell: cmd - run: smctl.exe sign --keypair-alias=%KEYPAIR_ALIAS% --input "%FILE_PATH%\%FILE_NAME%" - - - uses: actions/upload-artifact@v4 - with: - name: ${{ env.FILE_NAME }} - path: ${{ env.FILE_NAME }} - overwrite: true - - - name: Get latest release ID - id: release-id + - name: Update release asset (Windows) + if: matrix.settings.platform == 'windows-latest' && needs.get-version.outputs.should-publish != '' shell: bash run: | - RELEASE_ID=$(curl -s -H "Authorization: Bearer $GH_TOKEN" "https://api.github.com/repos/$PUBLISH_REPO/releases?per_page=1" | jq -r '.[0].id') - echo "release_id=$RELEASE_ID" >> $GITHUB_OUTPUT + PUBLISH_FILE_NAME=$(echo "${{ steps.file-info.outputs.filename }}" | sed 's/ /./g') + FILE_PATH="${{ steps.file-info.outputs.path }}/${{ steps.file-info.outputs.filename }}" + RELEASE_ID="${{ needs.create-release.outputs.releaseId }}" + echo "Updating release asset for file: $PUBLISH_FILE_NAME" + echo "File path: $FILE_PATH" + echo "Release ID: $RELEASE_ID" + echo "Repository: $PUBLISH_REPO" - - name: Delete existing asset - env: - RELEASE_ID: ${{ steps.release-id.outputs.release_id }} - shell: bash - run: | - PUBLISH_FILE_NAME=${FILE_NAME// /-} # Consistency with electron-builder - ASSET_ID=$(curl -s -H "Authorization: Bearer $GH_TOKEN" "https://api.github.com/repos/$PUBLISH_REPO/releases/$RELEASE_ID/assets" | jq -r --arg PUBLISH_FILE_NAME "$PUBLISH_FILE_NAME" '.[] | select(.name == $PUBLISH_FILE_NAME) | .id') - curl -X DELETE -H "Authorization: Bearer $GH_TOKEN" "https://api.github.com/repos/$PUBLISH_REPO/releases/assets/$ASSET_ID" + echo "Fetching existing assets..." + ASSETS_RESPONSE=$(curl -s -H "Authorization: Bearer $GH_TOKEN" "https://api.github.com/repos/$PUBLISH_REPO/releases/$RELEASE_ID/assets") + echo "Assets API Response:" + echo "$ASSETS_RESPONSE" - - name: Push new asset - env: - FILE_PATH: ${{ steps.download-artifact.outputs.download-path }} - RELEASE_ID: ${{ steps.release-id.outputs.release_id }} - shell: bash - run: | - PUBLISH_FILE_NAME=${FILE_NAME// /-} # Consistency with electron-builder - curl -X POST -H "Authorization: Bearer $GH_TOKEN" \ + ASSET_ID=$(echo "$ASSETS_RESPONSE" | jq -r --arg PUBLISH_FILE_NAME "$PUBLISH_FILE_NAME" '.[] | select(.name == $PUBLISH_FILE_NAME) | .id') + echo "Found Asset ID: $ASSET_ID" + + if [ "$ASSET_ID" != "null" ] && [ "$ASSET_ID" != "" ]; then + echo "Deleting existing asset with ID: $ASSET_ID" + DELETE_RESPONSE=$(curl -w "HTTP_STATUS:%{http_code}" -s -X DELETE -H "Authorization: Bearer $GH_TOKEN" "https://api.github.com/repos/$PUBLISH_REPO/releases/assets/$ASSET_ID") + echo "Delete response: $DELETE_RESPONSE" + else + echo "No existing asset found to delete" + fi + + echo "Uploading new asset..." + UPLOAD_RESPONSE=$(curl -w "HTTP_STATUS:%{http_code}" -s -X POST -H "Authorization: Bearer $GH_TOKEN" \ -H "Content-Type: application/octet-stream" \ - --data-binary "@$FILE_PATH\\$FILE_NAME" \ - "https://uploads.github.com/repos/$PUBLISH_REPO/releases/$RELEASE_ID/assets?name=$PUBLISH_FILE_NAME" + --data-binary "@$FILE_PATH" \ + "https://uploads.github.com/repos/$PUBLISH_REPO/releases/$RELEASE_ID/assets?name=$PUBLISH_FILE_NAME") + echo "Upload response: $UPLOAD_RESPONSE" + + - name: Upload Windows artifact (Windows) + if: matrix.settings.platform == 'windows-latest' + uses: actions/upload-artifact@v4 + with: + name: ${{ steps.file-info.outputs.filename }} + path: ${{ steps.file-info.outputs.path }}/${{ steps.file-info.outputs.filename }} + + # Linux release + - name: Upload Linux artifact (Linux) + if: matrix.settings.platform == 'ubuntu-22.04' + uses: actions/upload-artifact@v4 + with: + name: ${{ steps.file-info.outputs.filename }} + path: ${{ steps.file-info.outputs.path }}/${{ steps.file-info.outputs.filename }} + + publish-release: + runs-on: ubuntu-latest + needs: [get-version, check-version, create-release, package-tauri] + if: needs.get-version.outputs.should-publish != '' && needs.check-version.outputs.should-skip != 'true' + env: + RELEASE_ID: ${{ needs.create-release.outputs.releaseId }} + steps: + - uses: actions/checkout@v4 - name: Publish release - env: - RELEASE_ID: ${{ steps.release-id.outputs.release_id }} - shell: bash run: | - curl -X PATCH -H "Authorization: Bearer $GH_TOKEN" "https://api.github.com/repos/$PUBLISH_REPO/releases/$RELEASE_ID" -d '{"draft": false}' + curl -X PATCH -H "Authorization: Bearer $GH_TOKEN" -d '{"draft": false}' "https://api.github.com/repos/$PUBLISH_REPO/releases/$RELEASE_ID" + + - name: Update Gist with JSON + run: | + ASSET_ID=$(curl -s -H "Authorization: Bearer $GH_TOKEN" "https://api.github.com/repos/$PUBLISH_REPO/releases/$RELEASE_ID/assets" | jq -r '.[] | select(.name == "latest.json") | .id') + JSON_CONTENT=$(curl -sSL -H "Accept: application/octet-stream" -H "Authorization: token $GH_TOKEN" "https://api.github.com/repos/$PUBLISH_REPO/releases/assets/$ASSET_ID") + GIST_CONTENT=$(jq -n --arg json "$JSON_CONTENT" '{"files":{"updater.json":{"content":$json}}}') + curl -X PATCH -H "Authorization: token $GH_TOKEN" -d "$GIST_CONTENT" "https://api.github.com/gists/$UPDATER_GIST_ID" diff --git a/README.md b/README.md index 6089f47d6..cf843774a 100644 --- a/README.md +++ b/README.md @@ -37,77 +37,6 @@ Example usage: await invoke(new GramJs.help.GetAppConfig()) ``` -## Electron - -Electron allows building a native application that can be installed on Windows, macOS, and Linux. - -#### NPM scripts - -- `npm run electron:dev` - -Run Electron in development mode, concurrently starts 3 processes with watch for changes: main (main Electron process), renderer (FE code) and Webpack for Electron (compiles main Electron process from TypeScript). - -- `npm run electron:webpack` - -The main process code for Electron, which includes preload functionality, is written in TypeScript and is compiled using the `webpack-electron.config.js` configuration to generate JavaScript code. - -- `npm run electron:build` - -Prepare renderer (FE code) build, compile Electron main process code, install and build native dependencies, is used before packaging or publishing. - -- `npm run electron:staging` - -Create packages for macOS, Windows and Linux in `dist-electron` folders with `APP_ENV` as `staging` (allows to open DevTools, includes sourcemaps and does not minify built JavaScript code), can be used for manual distribution and testing packaged application. - -- `npm run electron:production` - -Create packages for macOS, Windows and Linux in `dist-electron` folders with `APP_ENV` as `production` (disabled DevTools, minified built JavaScript code), can be used for manual distribution and testing packaged application. - -- `npm run deploy:electron` - -Create packages for macOS, Windows and Linux in `dist-electron` folder and publish release to GitHub, which allows supporting autoupdates. See [GitHub release workflow](#github-release) for more info. - -#### Code signing on MacOS - -To sign the code of your application, follow these steps: - -- Install certificates from `/certs` folder to `login` folder of your Keychain. -- Download and install `Developer ID - G2` certificate from the [Apple PKI](https://www.apple.com/certificateauthority/) page. -- Under the Keychain application, go to the private key associated with your developer certificate. Then do `key > Get Info > Access Control`. Down there, make sure your application (Xcode) is in the list `Always allow access by these applications` and make sure `Confirm before allowing access` is turned on. -- A valid and appropriate identity from your keychain will be automatically used when you publish your application. - -More info in the [official documentation](https://www.electronjs.org/docs/latest/tutorial/code-signing). - -#### Notarize on MacOS - -Application notarization is done automatically in [electron-builder](https://github.com/electron-userland/electron-builder/) module, which requires `APPLE_ID` and `APPLE_APP_SPECIFIC_PASSWORD` environment variables to be passed. - -How to obtain app-specific password: - -- Sign in to [appleid.apple.com](appleid.apple.com). -- In the "Sign-In and Security" section, select "App-Specific Passwords". -- Select "Generate an app-specific password" or select the Add button, then follow the steps on your screen. - -#### GitHub release - -##### GitHub access token - -In order to publish new release, you need to add GitHub access token to `.env`. Generate a GitHub access token by going to https://github.com/settings/tokens/new. The access token should have the repo scope/permission. Once you have the token, assign it to an environment variable: - -``` -# .env -GH_TOKEN="{YOUR_TOKEN_HERE}" -``` - -##### Publish settings - -Publish configuration in `src/electron/config.yml` config file allows to set GitHub repository owner/name. - -##### Release workflow - -- Run `npm run electron:publish`, which will create new draft release and upload build artefacts to newly reated release. Version of created release will be the same as in `package.json`. -- Once you are done, publish the release. GitHub will tag the latest commit. - ### Dependencies * [GramJS](https://github.com/gram-js/gramjs) ([MIT License](https://github.com/gram-js/gramjs/blob/master/LICENSE)) * [pako](https://github.com/nodeca/pako) ([MIT License](https://github.com/nodeca/pako/blob/master/LICENSE)) diff --git a/deploy/prepareTauriConfig.js b/deploy/prepareTauriConfig.js new file mode 100644 index 000000000..d300f5202 --- /dev/null +++ b/deploy/prepareTauriConfig.js @@ -0,0 +1,25 @@ +/* eslint-disable no-null/no-null */ +export default function prepareTauriConfig() { + const config = { + build: { + frontendDist: process.env.BASE_URL, + devUrl: null, + }, + }; + + if (process.env.WITH_UPDATER === 'true') { + config.plugins = { + updater: { + dialog: false, + endpoints: [process.env.UPDATER_GIST_URL], + pubkey: process.env.UPDATER_PUBLIC_KEY, + }, + }; + + config.bundle = { + createUpdaterArtifacts: true, + }; + } + + return config; +} diff --git a/deploy/tauri_create_dmg.sh b/deploy/tauri_create_dmg.sh new file mode 100755 index 000000000..af91cc181 --- /dev/null +++ b/deploy/tauri_create_dmg.sh @@ -0,0 +1,13 @@ +#!/usr/bin/env bash + +create-dmg \ + --volname "Telegram Air installer" \ + --volicon "./tauri/icons/icon.icns" \ + --background "./tauri/images/background-dmg.tiff" \ + --window-size 540 380 \ + --icon-size 100 \ + --icon "Telegram Air.app" 138 225 \ + --hide-extension "Telegram Air.app" \ + --app-drop-link 402 225 \ + "$1" \ + "$2" diff --git a/docs/TAURI.md b/docs/TAURI.md new file mode 100644 index 000000000..5035dfbc1 --- /dev/null +++ b/docs/TAURI.md @@ -0,0 +1,184 @@ +# Tauri + +**Tauri** allows building a native application that can be installed on Windows, macOS and Linux. + +Since it's based on native OS WebView, you must compile application separately for each target platform, meaning you cannot build a macOS application on a Windows machine, or vice versa. Each build must be done on its respective platform. + +## Table of contents + +- [Installation](#installation) +- [Upgrading dependencies](#upgrading-dependencies) +- [NPM scripts](#npm-scripts) +- [Implementation specifics](#implementation-specifics) + - [Accessing the Tauri API](#accessing-the-tauri-api) + - [Custom header on MacOS](#custom-header-on-macos) + - [Multiple windows support](#multiple-windows-support) + - [Notifications](#notifications) + - [Browser devtool](#browser-devtools) + - [Capabilities](#capabilities) +- [Autoupdates](#autoupdates) +- [GitHub workflow for release](#github-workflow-for-release) +- [Important links](#important-links) + +## Installation + +To run Tauri locally, ensure that [Rust is installed](https://tauri.app/start/prerequisites/#rust). + +## Upgrading dependencies + +- To detect available upgrades for NPM modules, run: + +```bash +# Get outdated module +npm outdated @tauri-apps/{MODULE} # e.g. npm outdated @tauri-apps/cli +# or list all available versions +npm view @tauri-apps/{MODULE} versions -json + +# Install a specific version +npm install @tauri-apps/cli@{VERSION} +# or install the latest version +npm install @tauri-apps/cli@latest +``` + +- To upgrade Rust (Cargo) modules, run: + +```bash +# Install the cargo-edit module for easier upgrade +cargo install cargo-edit + +# Change to the `/tauri` directory +cd tauri + +# Run the upgrade +cargo upgrade +``` + +For details on upgrading Tauri dependencies, refer to the [official documentation](https://tauri.app/develop/updating-dependencies/). + +## NPM scripts + +- `npm run tauri:dev` — run Tauri in development mode. + +- `npm run tauri` — placeholder, which allows you to run [Tauri CLI](https://v2.tauri.app/reference/cli/) commands with `npm run tauri {COMMAND}`. + +## Implementation specifics + +### Accessing the Tauri API + +The Tauri API, including any integrated plugins, is accessible via the `window.tauri` object. For type definitions, refer to the `src/types/tauri.ts` file. + +If you have implemented [custom commands](https://tauri.app/develop/calling-rust/), ensure they are properly registered in the `src/util/tauri/initTauriApi.ts` + +### Custom header on MacOS + +Tauri currently has [some problems](https://github.com/tauri-apps/tauri/issues/13044) with custom titlebar style. Current implementation that uses native window handle would be removed when those problems are fixed. + +### Multiple windows support + +The Tauri main process exposes the `open_new_window` command, available as `window.tauri.openNewWindow`. This method can be used to open a new "child" closable window: + +```typescript +openNewWindow: (url: string) => Promise +``` + +### Notifications + +The Tauri notifications plugin [overrides the default Notification web API](https://github.com/tauri-apps/plugins-workspace/blob/v2/plugins/notification/guest-js/init.ts#L56), so no additional function needs to be called to send a notification to the user. + +**Important:** + +- Clicking on notifications to open the appropriate chat is currently not possible. More details in the [issue](https://github.com/tauri-apps/plugins-workspace/issues/1903). + +### Browser devtools + +Browser DevTools context menu can be enabled by adding the `devtools` feature to the `tauri/Cargo.toml` file: + +```rust +[dependencies] +tauri = { version = "...", features = ["...", "devtools"] } +``` + +For debug builds, DevTools are included by default through the `includeDebug` flag in the GitHub action. [More info](https://tauri.app/develop/debug/#webview-console) + +### Capabilities + +The `tauri/capabilities` folder provides fine-grained control over application windows and access to Tauri core, application, or plugin commands. These capabilities can be configured for different environments such as `development`, `staging` and `production`. +Keep them at minimum. For complex logic, consider implementing own command in Rust, rather than giving permissions to JS side. + +Learn more about [capabilities](https://tauri.app/reference/acl/capability/) and [how to configure them for different windows or platforms](https://tauri.app/learn/security/capabilities-for-windows-and-platforms/). + +## Autoupdates + +The application's autoupdate cycle is managed using the [Updater](https://tauri.app/plugin/updater/) plugin. + +Each time the "Package & Publish" GitHub workflow runs successfully, a new release is created in the publish repository. This release includes build artifacts and a `latest.json` file with a [JSON file](https://tauri.app/plugin/updater/#static-json-file) containing download links for each platform and signature tokens. + +The frontend application polls for updates every 10 minutes and displays an "Update" button if an update is available. + +**Important**: In development mode and for local builds, autoupdates are not available. Keys and other information are dynamically added within the GitHub action during the `Define Tauri configuration overrides` step. + +## GitHub workflow for release + +The build and release process for a Tauri application is managed using a GitHub workflow that leverages the official [Tauri Action](https://github.com/tauri-apps/tauri-action). + +### List of variables and secrets + +### Variables + +| **Variable Name** | **Description** | +|----------------------|-------------------------------------------------------------------------------------------------------------------------------| +| `PUBLISH_REPO_TAURI` | `{OWNER}/{REPO}` repository where published releases with artifacts will be pushed. | +| `NODE_VERSION` | Node.js version on which NPM modules installation and Tauri build should happen. | +| `BASE_URL_TAURI` | Remote URL from which application content will be loaded instead of the local index.html file, if the Auto-Updates feature is enabled in user settings. | +| `WITH_UPDATER` | Include `updater` plugin. Check Secrets section for the required env parameters + +--- + +### Secrets - Generic + +| **Secret Name** | **Description** | +|------------------|--------------------------------------------------------------------------------------| +| `GH_TOKEN_TAURI` | GitHub access token with `repo` scope/permission, required to publish new releases. | + +--- + +### Secrets - Application Updates + +| **Secret Name** | **Description** | +|-----------------------|-------------------------------------------------------------------------------------------------------------------------| +| `UPDATER_GIST_URL` | URL to GitHub gist (e.g., `https://gist.githubusercontent.com/GitHubUser/GistID/raw/updater.json`). Ensure `GH_TOKEN_TAURI` has read/write access. | +| `UPDATER_GIST_ID` | GitHub gist ID (`GistID` from `UPDATER_GIST_URL` example). | +| `UPDATER_PUBLIC_KEY` | Public key to validate artifacts before installation. [More info](https://tauri.app/plugin/updater/#signing-updates). | +| `UPDATER_PRIVATE_KEY` | Private key used to sign installer files (generated with the same command as public key). | + +--- + +### Secrets - MacOS Signing + +| **Secret Name** | **Description** | +|------------------------------|-------------------------------------------------------------------------------------| +| `APPLE_CERTIFICATE_BASE64` | Base64 string of the `.p12` certificate, exported from the keychain. | +| `APPLE_CERTIFICATE_PASSWORD` | Password for the `.p12` certificate. | +| `APPLE_SIGNING_IDENTITY` | Name of the keychain entry that contains the signing certificate. | +| `APPLE_ID` | Apple account email. | +| `APPLE_APP_SPECIFIC_PASSWORD`| Apple account [app-specific password](https://support.apple.com/en-ca/102654). | +| `APPLE_TEAM_ID` | Apple account [team ID](https://developer.apple.com/account#MembershipDetailsCard). | + +--- + +### Secrets - Windows Signing + +| **Secret Name** | **Description** | +|----------------------------|-----------------------------------------------------------------------------------------------------------------------------------| +| `SM_CLIENT_CERT_FILE_B64` | Base64 encoded version of the [authentication certificate](https://docs.digicert.com/en/software-trust-manager/ci-cd-integrations/plugins/github-custom-action-for-keypair-signing.html#create-an-authentication-certificate-426026). | +| `SM_CLIENT_CERT_PASSWORD` | Password for the authentication certificate. | +| `SM_HOST` | [Path to the DigiCert ONE portal with client authorization](https://docs.digicert.com/en/software-trust-manager/general/requirements.html#host-environment-367442). | +| `SM_API_KEY` | [API token](https://docs.digicert.com/en/software-trust-manager/ci-cd-integrations/plugins/github-custom-action-for-keypair-signing.html#create-an-api-token-426026) created with the authentication certificate. | +| `KEYPAIR_ALIAS` | Keypair alias for the [certificate keylocker](https://one.digicert.com/signingmanager/certificates-keylocker). | + + +## Important links + +- [Rust documentation for Tauri](https://docs.rs/tauri/latest/tauri/) +- [Plugins documentation](https://tauri.app/plugin/) +- [Plugins GitHub repository](https://github.com/tauri-apps/plugins-workspace) diff --git a/eslint.config.mjs b/eslint.config.mjs index b79b79063..21eca5819 100644 --- a/eslint.config.mjs +++ b/eslint.config.mjs @@ -39,7 +39,6 @@ export default tseslint.config( 'src/lib/fastBlur.js', 'src/types/language.d.ts', 'dist/', - 'dist-electron/', 'public/', 'deploy/update_version.js', ]), diff --git a/package-lock.json b/package-lock.json index 19bd1c862..6288a7d01 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,22 +1,27 @@ { "name": "telegram-t", - "version": "10.9.72", + "version": "10.9.71", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "telegram-t", - "version": "10.9.72", + "version": "10.9.71", "license": "GPL-3.0-or-later", "dependencies": { "@cryptography/aes": "^0.1.1", + "@tauri-apps/api": "^2.8.0", + "@tauri-apps/plugin-notification": "^2.3.1", + "@tauri-apps/plugin-process": "^2.3.0", + "@tauri-apps/plugin-shell": "^2.3.1", + "@tauri-apps/plugin-updater": "^2.9.0", "async-mutex": "^0.5.0", "big-integer": "github:painor/BigInteger.js", "emoji-data-ios": "git+https://github.com/korenskoy/emoji-data-ios#443f1c9d7b16a82e7ee53f7f226d7d9a9920a105", "idb-keyval": "^6.2.2", "lowlight": "^3.3.0", "mp4box": "^0.5.4", - "music-metadata": "^11.2.3", + "music-metadata": "^11.3.0", "opus-recorder": "github:Ajaxy/opus-recorder", "os-browserify": "^0.3.0", "pako": "^2.1.0", @@ -29,72 +34,64 @@ "@babel/preset-react": "^7.27.1", "@babel/preset-typescript": "^7.27.1", "@babel/register": "^7.27.1", - "@eslint/js": "^9.28.0", + "@eslint/js": "^9.29.0", "@glen/jest-raw-loader": "^2.0.0", "@mytonwallet/stylelint-whole-pixel": "github:mytonwallet-org/stylelint-whole-pixel#fd07e44d786460f7d469076b1d2cb1b05297896c", "@mytonwallet/webpack-watch-file-plugin": "github:mytonwallet-org/webpack-watch-file-plugin#747b7fd29da9a928aa8b63299adfba461d2f1231", - "@playwright/test": "^1.52.0", + "@playwright/test": "^1.53.0", "@statoscope/cli": "5.29.0", "@statoscope/webpack-plugin": "5.29.0", - "@stylistic/eslint-plugin": "^4.4.0", + "@stylistic/eslint-plugin": "^4.4.1", "@stylistic/stylelint-config": "^2.0.0", "@stylistic/stylelint-plugin": "^3.1.2", + "@tauri-apps/cli": "^2.8.0", "@testing-library/jest-dom": "^6.6.3", "@twbs/fantasticon": "^3.1.0", "@types/dom-view-transitions": "^1.0.6", "@types/hast": "^3.0.4", - "@types/jest": "^29.5.14", - "@types/node": "^22.15.29", - "@types/react": "^19.1.6", - "@types/react-dom": "^19.1.5", + "@types/jest": "^30.0.0", + "@types/node": "^24.0.3", + "@types/react": "^19.1.8", + "@types/react-dom": "^19.1.6", "@types/webpack": "^5.28.5", - "@typescript-eslint/eslint-plugin": "^8.33.1", - "@typescript-eslint/parser": "^8.33.1", + "@typescript-eslint/eslint-plugin": "^8.34.1", + "@typescript-eslint/parser": "^8.34.1", "@webpack-cli/serve": "^3.0.1", "autoprefixer": "^10.4.21", "babel-loader": "^10.0.0", "babel-plugin-transform-import-meta": "^2.3.3", - "bindings": "git+https://github.com/zubiden/node-bindings#1f689378b1cd26f99d3b7156fe40a520365d1272", - "browserlist": "^1.0.1", "buffer": "^6.0.3", "concurrently": "^9.1.2", "copy-webpack-plugin": "^13.0.0", "cross-env": "^7.0.3", "css-loader": "^7.1.2", "dotenv": "^16.5.0", - "electron": "^36.3.2", - "electron-builder": "^26.0.12", - "electron-conf": "^1.3.0", - "electron-context-menu": "^4.1.0", - "electron-drag-click": "git+https://github.com/zubiden/electron-drag-click#cf6918ddb648e13ebcf6cf1e7aa008258edc06ad", - "electron-updater": "^6.6.2", - "electronmon": "^2.0.3", - "eslint": "^9.28.0", + "eslint": "^9.29.0", "eslint-plugin-import": "^2.31.0", - "eslint-plugin-jest": "^28.12.0", + "eslint-plugin-jest": "^28.14.0", "eslint-plugin-jsx-a11y": "^6.10.2", "eslint-plugin-no-null": "^1.0.2", "eslint-plugin-react": "^7.37.5", "eslint-plugin-react-hooks-static-deps": "git+https://github.com/zubiden/eslint-plugin-react-hooks-static-deps#c16f35bf2e6e364cbc692c73cc350c1c5d46cc6e", - "eslint-plugin-react-x": "^1.51.0", + "eslint-plugin-react-x": "^1.52.2", "eslint-plugin-simple-import-sort": "^12.1.1", "eslint-plugin-tt-multitab": "git+https://github.com/zubiden/eslint-plugin-tt-multitab#15d542004d39ec7c29d50385484511bab0b77ea9", "eslint-plugin-unused-imports": "^4.1.4", "fake-indexeddb": "^6.0.1", "git-revision-webpack-plugin": "^5.0.0", "gitlog": "^5.1.0", - "glob": "^11.0.2", + "glob": "^11.0.3", "html-webpack-plugin": "^5.6.3", "husky": "^9.1.7", - "jest": "^29.7.0", - "jest-environment-jsdom": "^29.7.0", - "lint-staged": "^16.1.0", + "jest": "^30.0.0", + "jest-environment-jsdom": "^30.0.0", + "lint-staged": "^16.1.2", "mini-css-extract-plugin": "^2.9.2", - "minimatch": "^10.0.1", + "minimatch": "^10.0.3", "postcss-loader": "^8.1.1", "postcss-modules": "^6.0.1", "react": "^19.1.0", - "sass": "^1.89.1", + "sass": "^1.89.2", "sass-loader": "^16.0.5", "script-loader": "^0.7.2", "serve": "^14.2.4", @@ -106,9 +103,9 @@ "stylelint-high-performance-animation": "^1.11.0", "stylelint-selector-tag-no-without-class": "^3.0.1", "telegraph-node": "^1.0.4", - "tsx": "^4.19.4", + "tsx": "^4.20.3", "typescript": "^5.8.3", - "typescript-eslint": "^8.33.1", + "typescript-eslint": "^8.34.1", "webpack": "^5.99.9", "webpack-dev-server": "^5.2.2" }, @@ -142,6 +139,27 @@ "node": ">=6.0.0" } }, + "node_modules/@asamuzakjp/css-color": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/@asamuzakjp/css-color/-/css-color-3.2.0.tgz", + "integrity": "sha512-K1A6z8tS3XsmCMM86xoWdn7Fkdn9m6RSVtocUrJYIwZnFVkng/PvkEoWtOWmP+Scc6saYWHWZYbndEEXxl24jw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@csstools/css-calc": "^2.1.3", + "@csstools/css-color-parser": "^3.0.9", + "@csstools/css-parser-algorithms": "^3.0.4", + "@csstools/css-tokenizer": "^3.0.3", + "lru-cache": "^10.4.3" + } + }, + "node_modules/@asamuzakjp/css-color/node_modules/lru-cache": { + "version": "10.4.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", + "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", + "dev": true, + "license": "ISC" + }, "node_modules/@babel/code-frame": { "version": "7.27.1", "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.27.1.tgz", @@ -467,14 +485,14 @@ } }, "node_modules/@babel/helpers": { - "version": "7.27.4", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.27.4.tgz", - "integrity": "sha512-Y+bO6U+I7ZKaM5G5rDUZiYfUvQPUibYmAFe7EnKdnKBbVXDZxvp+MWOH5gYciY0EPk4EScsuFMQBbEfpdRKSCQ==", + "version": "7.27.6", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.27.6.tgz", + "integrity": "sha512-muE8Tt8M22638HU31A3CgfSUciwz1fhATfoVai05aPXGor//CdWDCbnlY1yvBPo07njuVOCNGCSp/GTt12lIug==", "dev": true, "license": "MIT", "dependencies": { "@babel/template": "^7.27.2", - "@babel/types": "^7.27.3" + "@babel/types": "^7.27.6" }, "engines": { "node": ">=6.9.0" @@ -1986,9 +2004,9 @@ } }, "node_modules/@babel/types": { - "version": "7.27.3", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.27.3.tgz", - "integrity": "sha512-Y1GkI4ktrtvmawoSq+4FCVHNryea6uR+qUQy0AGxLSsjCX0nVmkYQMBLHDkXZuo5hGx7eYdnIaslsdBFm7zbUw==", + "version": "7.27.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.27.6.tgz", + "integrity": "sha512-ETyHEk2VHHvl9b9jZP5IHPavHYk57EhanlRRuae9XCpb/j5bDCbPPMOBfCWhnl/7EDJz0jEMCi/RhccCE8r1+Q==", "dev": true, "license": "MIT", "dependencies": { @@ -2012,6 +2030,78 @@ "integrity": "sha512-PcYz4FDGblO6tM2kSC+VzhhK62vml6k6/YAkiWtyPvrgJVfnDRoHGDtKn5UiaRRUrvUTTocBpvc2rRgTCqxjsg==", "license": "GPL-3.0-or-later" }, + "node_modules/@csstools/color-helpers": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/@csstools/color-helpers/-/color-helpers-5.0.2.tgz", + "integrity": "sha512-JqWH1vsgdGcw2RR6VliXXdA0/59LttzlU8UlRT/iUUsEeWfYq8I+K0yhihEUTTHLRm1EXvpsCx3083EU15ecsA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "engines": { + "node": ">=18" + } + }, + "node_modules/@csstools/css-calc": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/@csstools/css-calc/-/css-calc-2.1.4.tgz", + "integrity": "sha512-3N8oaj+0juUw/1H3YwmDDJXCgTB1gKU6Hc/bB502u9zR0q2vd786XJH9QfrKIEgFlZmhZiq6epXl4rHqhzsIgQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT", + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@csstools/css-parser-algorithms": "^3.0.5", + "@csstools/css-tokenizer": "^3.0.4" + } + }, + "node_modules/@csstools/css-color-parser": { + "version": "3.0.10", + "resolved": "https://registry.npmjs.org/@csstools/css-color-parser/-/css-color-parser-3.0.10.tgz", + "integrity": "sha512-TiJ5Ajr6WRd1r8HSiwJvZBiJOqtH86aHpUjq5aEKWHiII2Qfjqd/HCWKPOW8EP4vcspXbHnXrwIDlu5savQipg==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT", + "dependencies": { + "@csstools/color-helpers": "^5.0.2", + "@csstools/css-calc": "^2.1.4" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@csstools/css-parser-algorithms": "^3.0.5", + "@csstools/css-tokenizer": "^3.0.4" + } + }, "node_modules/@csstools/css-parser-algorithms": { "version": "3.0.5", "resolved": "https://registry.npmjs.org/@csstools/css-parser-algorithms/-/css-parser-algorithms-3.0.5.tgz", @@ -2079,24 +2169,6 @@ "@csstools/css-tokenizer": "^3.0.1" } }, - "node_modules/@develar/schema-utils": { - "version": "2.6.5", - "resolved": "https://registry.npmjs.org/@develar/schema-utils/-/schema-utils-2.6.5.tgz", - "integrity": "sha512-0cp4PsWQ/9avqTVMCtZ+GirikIA36ikvjtHweU4/j8yLtgObI0+JUPhYFScgwlteveGB1rt3Cm8UhN04XayDig==", - "dev": true, - "license": "MIT", - "dependencies": { - "ajv": "^6.12.0", - "ajv-keywords": "^3.4.1" - }, - "engines": { - "node": ">= 8.9.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - } - }, "node_modules/@discoveryjs/json-ext": { "version": "0.5.7", "resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz", @@ -2128,572 +2200,38 @@ "url": "https://github.com/sponsors/wooorm" } }, - "node_modules/@electron/asar": { - "version": "3.2.18", - "resolved": "https://registry.npmjs.org/@electron/asar/-/asar-3.2.18.tgz", - "integrity": "sha512-2XyvMe3N3Nrs8cV39IKELRHTYUWFKrmqqSY1U+GMlc0jvqjIVnoxhNd2H4JolWQncbJi1DCvb5TNxZuI2fEjWg==", - "dev": true, - "license": "MIT", - "dependencies": { - "commander": "^5.0.0", - "glob": "^7.1.6", - "minimatch": "^3.0.4" - }, - "bin": { - "asar": "bin/asar.js" - }, - "engines": { - "node": ">=10.12.0" - } - }, - "node_modules/@electron/asar/node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/@electron/asar/node_modules/commander": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-5.1.0.tgz", - "integrity": "sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 6" - } - }, - "node_modules/@electron/asar/node_modules/glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "deprecated": "Glob versions prior to v9 are no longer supported", - "dev": true, - "license": "ISC", - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/@electron/asar/node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dev": true, - "license": "ISC", - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "node_modules/@electron/fuses": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/@electron/fuses/-/fuses-1.8.0.tgz", - "integrity": "sha512-zx0EIq78WlY/lBb1uXlziZmDZI4ubcCXIMJ4uGjXzZW0nS19TjSPeXPAjzzTmKQlJUZm0SbmZhPKP7tuQ1SsEw==", - "dev": true, - "license": "MIT", - "dependencies": { - "chalk": "^4.1.1", - "fs-extra": "^9.0.1", - "minimist": "^1.2.5" - }, - "bin": { - "electron-fuses": "dist/bin.js" - } - }, - "node_modules/@electron/fuses/node_modules/fs-extra": { - "version": "9.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", - "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "at-least-node": "^1.0.0", - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/@electron/fuses/node_modules/jsonfile": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", - "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "universalify": "^2.0.0" - }, - "optionalDependencies": { - "graceful-fs": "^4.1.6" - } - }, - "node_modules/@electron/fuses/node_modules/universalify": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", - "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 10.0.0" - } - }, - "node_modules/@electron/get": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@electron/get/-/get-2.0.3.tgz", - "integrity": "sha512-Qkzpg2s9GnVV2I2BjRksUi43U5e6+zaQMcjoJy0C+C5oxaKl+fmckGDQFtRpZpZV0NQekuZZ+tGz7EA9TVnQtQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "debug": "^4.1.1", - "env-paths": "^2.2.0", - "fs-extra": "^8.1.0", - "got": "^11.8.5", - "progress": "^2.0.3", - "semver": "^6.2.0", - "sumchecker": "^3.0.1" - }, - "engines": { - "node": ">=12" - }, - "optionalDependencies": { - "global-agent": "^3.0.0" - } - }, - "node_modules/@electron/node-gyp": { - "version": "10.2.0-electron.1", - "resolved": "git+ssh://git@github.com/electron/node-gyp.git#06b29aafb7708acef8b3669835c8a7857ebc92d2", - "integrity": "sha512-4MSBTT8y07YUDqf69/vSh80Hh791epYqGtWHO3zSKhYFwQg+gx9wi1PqbqP6YqC4WMsNxZ5l9oDmnWdK5pfCKQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "env-paths": "^2.2.0", - "exponential-backoff": "^3.1.1", - "glob": "^8.1.0", - "graceful-fs": "^4.2.6", - "make-fetch-happen": "^10.2.1", - "nopt": "^6.0.0", - "proc-log": "^2.0.1", - "semver": "^7.3.5", - "tar": "^6.2.1", - "which": "^2.0.2" - }, - "bin": { - "node-gyp": "bin/node-gyp.js" - }, - "engines": { - "node": ">=12.13.0" - } - }, - "node_modules/@electron/node-gyp/node_modules/glob": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", - "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", - "deprecated": "Glob versions prior to v9 are no longer supported", - "dev": true, - "license": "ISC", - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^5.0.1", - "once": "^1.3.0" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/@electron/node-gyp/node_modules/minimatch": { - "version": "5.1.6", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", - "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", - "dev": true, - "license": "ISC", - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/@electron/node-gyp/node_modules/semver": { - "version": "7.7.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz", - "integrity": "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==", - "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/@electron/notarize": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/@electron/notarize/-/notarize-2.5.0.tgz", - "integrity": "sha512-jNT8nwH1f9X5GEITXaQ8IF/KdskvIkOFfB2CvwumsveVidzpSc+mvhhTMdAGSYF3O+Nq49lJ7y+ssODRXu06+A==", - "dev": true, - "license": "MIT", - "dependencies": { - "debug": "^4.1.1", - "fs-extra": "^9.0.1", - "promise-retry": "^2.0.1" - }, - "engines": { - "node": ">= 10.0.0" - } - }, - "node_modules/@electron/notarize/node_modules/fs-extra": { - "version": "9.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", - "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "at-least-node": "^1.0.0", - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/@electron/notarize/node_modules/jsonfile": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", - "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "universalify": "^2.0.0" - }, - "optionalDependencies": { - "graceful-fs": "^4.1.6" - } - }, - "node_modules/@electron/notarize/node_modules/universalify": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", - "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 10.0.0" - } - }, - "node_modules/@electron/osx-sign": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/@electron/osx-sign/-/osx-sign-1.3.1.tgz", - "integrity": "sha512-BAfviURMHpmb1Yb50YbCxnOY0wfwaLXH5KJ4+80zS0gUkzDX3ec23naTlEqKsN+PwYn+a1cCzM7BJ4Wcd3sGzw==", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "compare-version": "^0.1.2", - "debug": "^4.3.4", - "fs-extra": "^10.0.0", - "isbinaryfile": "^4.0.8", - "minimist": "^1.2.6", - "plist": "^3.0.5" - }, - "bin": { - "electron-osx-flat": "bin/electron-osx-flat.js", - "electron-osx-sign": "bin/electron-osx-sign.js" - }, - "engines": { - "node": ">=12.0.0" - } - }, - "node_modules/@electron/osx-sign/node_modules/fs-extra": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", - "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/@electron/osx-sign/node_modules/isbinaryfile": { - "version": "4.0.10", - "resolved": "https://registry.npmjs.org/isbinaryfile/-/isbinaryfile-4.0.10.tgz", - "integrity": "sha512-iHrqe5shvBUcFbmZq9zOQHBoeOhZJu6RQGrDpBgenUm/Am+F3JM2MgQj+rK3Z601fzrL5gLZWtAPH2OBaSVcyw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 8.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/gjtorikian/" - } - }, - "node_modules/@electron/osx-sign/node_modules/jsonfile": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", - "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "universalify": "^2.0.0" - }, - "optionalDependencies": { - "graceful-fs": "^4.1.6" - } - }, - "node_modules/@electron/osx-sign/node_modules/universalify": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", - "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 10.0.0" - } - }, - "node_modules/@electron/rebuild": { - "version": "3.7.0", - "resolved": "https://registry.npmjs.org/@electron/rebuild/-/rebuild-3.7.0.tgz", - "integrity": "sha512-VW++CNSlZwMYP7MyXEbrKjpzEwhB5kDNbzGtiPEjwYysqyTCF+YbNJ210Dj3AjWsGSV4iEEwNkmJN9yGZmVvmw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@electron/node-gyp": "git+https://github.com/electron/node-gyp.git#06b29aafb7708acef8b3669835c8a7857ebc92d2", - "@malept/cross-spawn-promise": "^2.0.0", - "chalk": "^4.0.0", - "debug": "^4.1.1", - "detect-libc": "^2.0.1", - "fs-extra": "^10.0.0", - "got": "^11.7.0", - "node-abi": "^3.45.0", - "node-api-version": "^0.2.0", - "ora": "^5.1.0", - "read-binary-file-arch": "^1.0.6", - "semver": "^7.3.5", - "tar": "^6.0.5", - "yargs": "^17.0.1" - }, - "bin": { - "electron-rebuild": "lib/cli.js" - }, - "engines": { - "node": ">=12.13.0" - } - }, - "node_modules/@electron/rebuild/node_modules/fs-extra": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", - "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/@electron/rebuild/node_modules/jsonfile": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", - "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "universalify": "^2.0.0" - }, - "optionalDependencies": { - "graceful-fs": "^4.1.6" - } - }, - "node_modules/@electron/rebuild/node_modules/semver": { - "version": "7.7.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz", - "integrity": "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==", - "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/@electron/rebuild/node_modules/universalify": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", - "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 10.0.0" - } - }, - "node_modules/@electron/universal": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@electron/universal/-/universal-2.0.1.tgz", - "integrity": "sha512-fKpv9kg4SPmt+hY7SVBnIYULE9QJl8L3sCfcBsnqbJwwBwAeTLokJ9TRt9y7bK0JAzIW2y78TVVjvnQEms/yyA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@electron/asar": "^3.2.7", - "@malept/cross-spawn-promise": "^2.0.0", - "debug": "^4.3.1", - "dir-compare": "^4.2.0", - "fs-extra": "^11.1.1", - "minimatch": "^9.0.3", - "plist": "^3.1.0" - }, - "engines": { - "node": ">=16.4" - } - }, - "node_modules/@electron/universal/node_modules/fs-extra": { - "version": "11.3.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.3.0.tgz", - "integrity": "sha512-Z4XaCL6dUDHfP/jT25jJKMmtxvuwbkrD1vNSMFlo9lNLY2c5FHYSQgHPRZUjAB26TpDEoW9HCOgplrdbaPV/ew==", - "dev": true, - "license": "MIT", - "dependencies": { - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" - }, - "engines": { - "node": ">=14.14" - } - }, - "node_modules/@electron/universal/node_modules/jsonfile": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", - "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "universalify": "^2.0.0" - }, - "optionalDependencies": { - "graceful-fs": "^4.1.6" - } - }, - "node_modules/@electron/universal/node_modules/minimatch": { - "version": "9.0.5", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", - "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", - "dev": true, - "license": "ISC", - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/@electron/universal/node_modules/universalify": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", - "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 10.0.0" - } - }, - "node_modules/@electron/windows-sign": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/@electron/windows-sign/-/windows-sign-1.2.2.tgz", - "integrity": "sha512-dfZeox66AvdPtb2lD8OsIIQh12Tp0GNCRUDfBHIKGpbmopZto2/A8nSpYYLoedPIHpqkeblZ/k8OV0Gy7PYuyQ==", - "dev": true, - "license": "BSD-2-Clause", - "optional": true, - "peer": true, - "dependencies": { - "cross-dirname": "^0.1.0", - "debug": "^4.3.4", - "fs-extra": "^11.1.1", - "minimist": "^1.2.8", - "postject": "^1.0.0-alpha.6" - }, - "bin": { - "electron-windows-sign": "bin/electron-windows-sign.js" - }, - "engines": { - "node": ">=14.14" - } - }, - "node_modules/@electron/windows-sign/node_modules/fs-extra": { - "version": "11.3.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.3.0.tgz", - "integrity": "sha512-Z4XaCL6dUDHfP/jT25jJKMmtxvuwbkrD1vNSMFlo9lNLY2c5FHYSQgHPRZUjAB26TpDEoW9HCOgplrdbaPV/ew==", + "node_modules/@emnapi/core": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/@emnapi/core/-/core-1.4.3.tgz", + "integrity": "sha512-4m62DuCE07lw01soJwPiBGC0nAww0Q+RY70VZ+n49yDIO13yyinhbWCeNnaob0lakDtWQzSdtNWzJeOJt2ma+g==", "dev": true, "license": "MIT", "optional": true, - "peer": true, "dependencies": { - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" - }, - "engines": { - "node": ">=14.14" + "@emnapi/wasi-threads": "1.0.2", + "tslib": "^2.4.0" } }, - "node_modules/@electron/windows-sign/node_modules/jsonfile": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", - "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "node_modules/@emnapi/runtime": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.4.3.tgz", + "integrity": "sha512-pBPWdu6MLKROBX05wSNKcNb++m5Er+KQ9QkB+WVM+pW2Kx9hoSrVTnu3BdkI5eBLZoKu/J6mW/B6i6bJB2ytXQ==", "dev": true, "license": "MIT", "optional": true, - "peer": true, "dependencies": { - "universalify": "^2.0.0" - }, - "optionalDependencies": { - "graceful-fs": "^4.1.6" + "tslib": "^2.4.0" } }, - "node_modules/@electron/windows-sign/node_modules/universalify": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", - "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", + "node_modules/@emnapi/wasi-threads": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@emnapi/wasi-threads/-/wasi-threads-1.0.2.tgz", + "integrity": "sha512-5n3nTJblwRi8LlXkJ9eBzu+kZR8Yxcc7ubakyQTFzPMtIhFpUBRbsnc2Dv88IZDIbCDlBiWrknhB4Lsz7mg6BA==", "dev": true, "license": "MIT", "optional": true, - "peer": true, - "engines": { - "node": ">= 10.0.0" + "dependencies": { + "tslib": "^2.4.0" } }, "node_modules/@esbuild/aix-ppc64": { @@ -3164,16 +2702,16 @@ } }, "node_modules/@eslint-react/ast": { - "version": "1.51.0", - "resolved": "https://registry.npmjs.org/@eslint-react/ast/-/ast-1.51.0.tgz", - "integrity": "sha512-vLJ5RMtwWItUx4rZtvuLDqDDxYlxFX/T6ijx036Jbo353d6ooVQiY9zqb9ULnnWurFrTh/xK965GiF4uaEFFNQ==", + "version": "1.52.2", + "resolved": "https://registry.npmjs.org/@eslint-react/ast/-/ast-1.52.2.tgz", + "integrity": "sha512-L0Tbbzx5l7JHgkQ1TqPWQuZ4+PsXDcgtt3056FOYqstUrDRG+5ylm7h3gEWu98I3FDdgLS8q9dOzz0PGgwZCTA==", "dev": true, "license": "MIT", "dependencies": { - "@eslint-react/eff": "1.51.0", - "@typescript-eslint/types": "^8.33.1", - "@typescript-eslint/typescript-estree": "^8.33.1", - "@typescript-eslint/utils": "^8.33.1", + "@eslint-react/eff": "1.52.2", + "@typescript-eslint/types": "^8.34.0", + "@typescript-eslint/typescript-estree": "^8.34.0", + "@typescript-eslint/utils": "^8.34.0", "string-ts": "^2.2.1", "ts-pattern": "^5.7.1" }, @@ -3183,21 +2721,21 @@ } }, "node_modules/@eslint-react/core": { - "version": "1.51.0", - "resolved": "https://registry.npmjs.org/@eslint-react/core/-/core-1.51.0.tgz", - "integrity": "sha512-p2kxmeOfZ7gF0lJhYshJi7NZcFtA6NE03figb/kiMNL6EbZvXqEFiJtfLNw5hMkgJXTBEsqQNLwyloQQaPGS/A==", + "version": "1.52.2", + "resolved": "https://registry.npmjs.org/@eslint-react/core/-/core-1.52.2.tgz", + "integrity": "sha512-FpxKZJHlf3zXETNL+WQP/SoYuVQNheWm1iDgW68RyHygD8mzk9CnVLDgjMrfmh2n0eaOqnWCL/IC2YzD6VpYOQ==", "dev": true, "license": "MIT", "dependencies": { - "@eslint-react/ast": "1.51.0", - "@eslint-react/eff": "1.51.0", - "@eslint-react/kit": "1.51.0", - "@eslint-react/shared": "1.51.0", - "@eslint-react/var": "1.51.0", - "@typescript-eslint/scope-manager": "^8.33.1", - "@typescript-eslint/type-utils": "^8.33.1", - "@typescript-eslint/types": "^8.33.1", - "@typescript-eslint/utils": "^8.33.1", + "@eslint-react/ast": "1.52.2", + "@eslint-react/eff": "1.52.2", + "@eslint-react/kit": "1.52.2", + "@eslint-react/shared": "1.52.2", + "@eslint-react/var": "1.52.2", + "@typescript-eslint/scope-manager": "^8.34.0", + "@typescript-eslint/type-utils": "^8.34.0", + "@typescript-eslint/types": "^8.34.0", + "@typescript-eslint/utils": "^8.34.0", "birecord": "^0.1.1", "ts-pattern": "^5.7.1" }, @@ -3207,9 +2745,9 @@ } }, "node_modules/@eslint-react/eff": { - "version": "1.51.0", - "resolved": "https://registry.npmjs.org/@eslint-react/eff/-/eff-1.51.0.tgz", - "integrity": "sha512-1pBCk0r4O8IoPOCoJDOTrOlWZjRXYpRMNSU2l3G1/fezqyeFrTxbbZquTckFjRvgJ0GI8snykP+I09Q2VkHMkg==", + "version": "1.52.2", + "resolved": "https://registry.npmjs.org/@eslint-react/eff/-/eff-1.52.2.tgz", + "integrity": "sha512-YBPE2J1+PfXrR9Ct+9rQsw8uRU06zHopI508cfj0usaIBf3hz18V2GoRTVhsjniP0QbvKQdHzyPmmS/B6uyMZQ==", "dev": true, "license": "MIT", "engines": { @@ -3218,16 +2756,16 @@ } }, "node_modules/@eslint-react/kit": { - "version": "1.51.0", - "resolved": "https://registry.npmjs.org/@eslint-react/kit/-/kit-1.51.0.tgz", - "integrity": "sha512-cgHl7jbYONWJRmLN78DYNRLuLU5nZLEZeXIPwpjdCc+sm9TYvRmzva3l5uIAOSDbJH3wec9gNT5qqS0J278O+w==", + "version": "1.52.2", + "resolved": "https://registry.npmjs.org/@eslint-react/kit/-/kit-1.52.2.tgz", + "integrity": "sha512-k0cSgFnPlDPI1xyRzHjEWIapLG0zCy7mx1HBLg5wuKf/zzSh3iNFId53xMebR05vM2k9YH63gsvTwRkGx/77Zw==", "dev": true, "license": "MIT", "dependencies": { - "@eslint-react/eff": "1.51.0", - "@typescript-eslint/utils": "^8.33.1", + "@eslint-react/eff": "1.52.2", + "@typescript-eslint/utils": "^8.34.0", "ts-pattern": "^5.7.1", - "zod": "^3.25.49" + "zod": "^3.25.63" }, "engines": { "bun": ">=1.0.15", @@ -3235,17 +2773,17 @@ } }, "node_modules/@eslint-react/shared": { - "version": "1.51.0", - "resolved": "https://registry.npmjs.org/@eslint-react/shared/-/shared-1.51.0.tgz", - "integrity": "sha512-7tI2pGNPixZUQLecrYj+z/5oizalzQfJ69Ts4yV3yKz0qqLex8crmRQyofjhrQFBkVxpjRUqaADvLLfymbzoQQ==", + "version": "1.52.2", + "resolved": "https://registry.npmjs.org/@eslint-react/shared/-/shared-1.52.2.tgz", + "integrity": "sha512-YHysVcCfmBoxt2+6Ao4HdLPUYNSem70gy+0yzOQvlQFSsGhh+uifQ68SSa/2uJBWfNUm9xQlyDsr2raeO4BlgA==", "dev": true, "license": "MIT", "dependencies": { - "@eslint-react/eff": "1.51.0", - "@eslint-react/kit": "1.51.0", - "@typescript-eslint/utils": "^8.33.1", + "@eslint-react/eff": "1.52.2", + "@eslint-react/kit": "1.52.2", + "@typescript-eslint/utils": "^8.34.0", "ts-pattern": "^5.7.1", - "zod": "^3.25.49" + "zod": "^3.25.63" }, "engines": { "bun": ">=1.0.15", @@ -3253,17 +2791,17 @@ } }, "node_modules/@eslint-react/var": { - "version": "1.51.0", - "resolved": "https://registry.npmjs.org/@eslint-react/var/-/var-1.51.0.tgz", - "integrity": "sha512-pwVay0trXNh3UrVAQNUgUgY8sdVHmhKNDvljF4t/SAd3HGJrgp18Ecz6PxLwFEPTSdvYHeCWEmZMpv83CsO2fA==", + "version": "1.52.2", + "resolved": "https://registry.npmjs.org/@eslint-react/var/-/var-1.52.2.tgz", + "integrity": "sha512-/7IYMPsmO0tIYqkqAVnkqB4eXeVBvgBL/a9hcGCO2eUSzslYzQHSzNPhIoPLD9HXng+0CWlT+KupOFIqP9a26A==", "dev": true, "license": "MIT", "dependencies": { - "@eslint-react/ast": "1.51.0", - "@eslint-react/eff": "1.51.0", - "@typescript-eslint/scope-manager": "^8.33.1", - "@typescript-eslint/types": "^8.33.1", - "@typescript-eslint/utils": "^8.33.1", + "@eslint-react/ast": "1.52.2", + "@eslint-react/eff": "1.52.2", + "@typescript-eslint/scope-manager": "^8.34.0", + "@typescript-eslint/types": "^8.34.0", + "@typescript-eslint/utils": "^8.34.0", "string-ts": "^2.2.1", "ts-pattern": "^5.7.1" }, @@ -3273,9 +2811,9 @@ } }, "node_modules/@eslint/config-array": { - "version": "0.20.0", - "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.20.0.tgz", - "integrity": "sha512-fxlS1kkIjx8+vy2SjuCB94q3htSNrufYTXubwiBFeaQHbH6Ipi43gFJq2zCMt6PHhImH3Xmr0NksKDvchWlpQQ==", + "version": "0.20.1", + "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.20.1.tgz", + "integrity": "sha512-OL0RJzC/CBzli0DrrR31qzj6d6i6Mm3HByuhflhl4LOBiWxN+3i6/t/ZQQNii4tjksXi8r2CRW1wMpWA2ULUEw==", "dev": true, "license": "Apache-2.0", "dependencies": { @@ -3287,17 +2825,6 @@ "node": "^18.18.0 || ^20.9.0 || >=21.1.0" } }, - "node_modules/@eslint/config-array/node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, "node_modules/@eslint/config-array/node_modules/minimatch": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", @@ -3312,9 +2839,9 @@ } }, "node_modules/@eslint/config-helpers": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/@eslint/config-helpers/-/config-helpers-0.2.2.tgz", - "integrity": "sha512-+GPzk8PlG0sPpzdU5ZvIRMPidzAnZDl/s9L+y13iodqvb8leL53bTannOrQ/Im7UkpsmFU5Ily5U60LWixnmLg==", + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/@eslint/config-helpers/-/config-helpers-0.2.3.tgz", + "integrity": "sha512-u180qk2Um1le4yf0ruXH3PYFeEZeYC3p/4wCTKrr2U1CmGdzGi3KtY0nuPDH48UJxlKCC5RDzbcbh4X0XlqgHg==", "dev": true, "license": "Apache-2.0", "engines": { @@ -3358,17 +2885,6 @@ "url": "https://opencollective.com/eslint" } }, - "node_modules/@eslint/eslintrc/node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, "node_modules/@eslint/eslintrc/node_modules/globals": { "version": "14.0.0", "resolved": "https://registry.npmjs.org/globals/-/globals-14.0.0.tgz", @@ -3406,9 +2922,9 @@ } }, "node_modules/@eslint/js": { - "version": "9.28.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.28.0.tgz", - "integrity": "sha512-fnqSjGWd/CoIp4EXIxWVK/sHA6DOHN4+8Ix2cX5ycOY7LG0UY8nHCU5pIp2eaE1Mc7Qd8kHspYNzYXT2ojPLzg==", + "version": "9.29.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.29.0.tgz", + "integrity": "sha512-3PIF4cBw/y+1u2EazflInpV+lYsSG0aByVIQzAgb1m1MhHFSbqTyNqtBKHgWf/9Ykud+DhILS9EGkmekVhbKoQ==", "dev": true, "license": "MIT", "engines": { @@ -3429,19 +2945,32 @@ } }, "node_modules/@eslint/plugin-kit": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.3.1.tgz", - "integrity": "sha512-0J+zgWxHN+xXONWIyPWKFMgVuJoZuGiIFu8yxk7RJjxkzpGmyja5wRFqZIVtjDVOQpV+Rw0iOAjYPE2eQyjr0w==", + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.3.2.tgz", + "integrity": "sha512-4SaFZCNfJqvk/kenHpI8xvN42DMaoycy4PzKc5otHxRswww1kAt82OlBuwRVLofCACCTZEcla2Ydxv8scMXaTg==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@eslint/core": "^0.14.0", + "@eslint/core": "^0.15.0", "levn": "^0.4.1" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" } }, + "node_modules/@eslint/plugin-kit/node_modules/@eslint/core": { + "version": "0.15.0", + "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.15.0.tgz", + "integrity": "sha512-b7ePw78tEWWkpgZCDYkbqDOP8dmM6qe+AOC6iuJqlq1R/0ahMAeH3qynpnqKFGkMltrp44ohV4ubGyvLX28tzw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@types/json-schema": "^7.0.15" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, "node_modules/@gar/promisify": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/@gar/promisify/-/promisify-1.1.3.tgz", @@ -3525,6 +3054,29 @@ "url": "https://github.com/sponsors/nzakas" } }, + "node_modules/@isaacs/balanced-match": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@isaacs/balanced-match/-/balanced-match-4.0.1.tgz", + "integrity": "sha512-yzMTt9lEb8Gv7zRioUilSglI0c0smZ9k5D65677DLWLtWJaXIS3CqcGyUFByYKlnUj6TkjLVs54fBl6+TiGQDQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": "20 || >=22" + } + }, + "node_modules/@isaacs/brace-expansion": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/@isaacs/brace-expansion/-/brace-expansion-5.0.0.tgz", + "integrity": "sha512-ZT55BDLV0yv0RBm2czMiZ+SqCGO7AvmOM3G/w2xhVPH+te0aKgFjmBvGlL1dH+ql2tgGO3MVrbb3jCKyvpgnxA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@isaacs/balanced-match": "^4.0.1" + }, + "engines": { + "node": "20 || >=22" + } + }, "node_modules/@isaacs/cliui": { "version": "8.0.2", "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", @@ -3686,61 +3238,61 @@ } }, "node_modules/@jest/console": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/console/-/console-29.7.0.tgz", - "integrity": "sha512-5Ni4CU7XHQi32IJ398EEP4RrB8eV09sXP2ROqD4bksHrnTree52PsxvX8tpL8LvTZ3pFzXyPbNQReSN41CAhOg==", + "version": "30.0.0", + "resolved": "https://registry.npmjs.org/@jest/console/-/console-30.0.0.tgz", + "integrity": "sha512-vfpJap6JZQ3I8sUN8dsFqNAKJYO4KIGxkcB+3Fw7Q/BJiWY5HwtMMiuT1oP0avsiDhjE/TCLaDgbGfHwDdBVeg==", "dev": true, "license": "MIT", "dependencies": { - "@jest/types": "^29.6.3", + "@jest/types": "30.0.0", "@types/node": "*", - "chalk": "^4.0.0", - "jest-message-util": "^29.7.0", - "jest-util": "^29.7.0", + "chalk": "^4.1.2", + "jest-message-util": "30.0.0", + "jest-util": "30.0.0", "slash": "^3.0.0" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, "node_modules/@jest/core": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/core/-/core-29.7.0.tgz", - "integrity": "sha512-n7aeXWKMnGtDA48y8TLWJPJmLmmZ642Ceo78cYWEpiD7FzDgmNDV/GCVRorPABdXLJZ/9wzzgZAlHjXjxDHGsg==", + "version": "30.0.0", + "resolved": "https://registry.npmjs.org/@jest/core/-/core-30.0.0.tgz", + "integrity": "sha512-1zU39zFtWSl5ZuDK3Rd6P8S28MmS4F11x6Z4CURrgJ99iaAJg68hmdJ2SAHEEO6ociaNk43UhUYtHxWKEWoNYw==", "dev": true, "license": "MIT", "dependencies": { - "@jest/console": "^29.7.0", - "@jest/reporters": "^29.7.0", - "@jest/test-result": "^29.7.0", - "@jest/transform": "^29.7.0", - "@jest/types": "^29.6.3", + "@jest/console": "30.0.0", + "@jest/pattern": "30.0.0", + "@jest/reporters": "30.0.0", + "@jest/test-result": "30.0.0", + "@jest/transform": "30.0.0", + "@jest/types": "30.0.0", "@types/node": "*", - "ansi-escapes": "^4.2.1", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "exit": "^0.1.2", - "graceful-fs": "^4.2.9", - "jest-changed-files": "^29.7.0", - "jest-config": "^29.7.0", - "jest-haste-map": "^29.7.0", - "jest-message-util": "^29.7.0", - "jest-regex-util": "^29.6.3", - "jest-resolve": "^29.7.0", - "jest-resolve-dependencies": "^29.7.0", - "jest-runner": "^29.7.0", - "jest-runtime": "^29.7.0", - "jest-snapshot": "^29.7.0", - "jest-util": "^29.7.0", - "jest-validate": "^29.7.0", - "jest-watcher": "^29.7.0", - "micromatch": "^4.0.4", - "pretty-format": "^29.7.0", - "slash": "^3.0.0", - "strip-ansi": "^6.0.0" + "ansi-escapes": "^4.3.2", + "chalk": "^4.1.2", + "ci-info": "^4.2.0", + "exit-x": "^0.2.2", + "graceful-fs": "^4.2.11", + "jest-changed-files": "30.0.0", + "jest-config": "30.0.0", + "jest-haste-map": "30.0.0", + "jest-message-util": "30.0.0", + "jest-regex-util": "30.0.0", + "jest-resolve": "30.0.0", + "jest-resolve-dependencies": "30.0.0", + "jest-runner": "30.0.0", + "jest-runtime": "30.0.0", + "jest-snapshot": "30.0.0", + "jest-util": "30.0.0", + "jest-validate": "30.0.0", + "jest-watcher": "30.0.0", + "micromatch": "^4.0.8", + "pretty-format": "30.0.0", + "slash": "^3.0.0" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" }, "peerDependencies": { "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" @@ -3751,140 +3303,178 @@ } } }, - "node_modules/@jest/core/node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "node_modules/@jest/diff-sequences": { + "version": "30.0.0", + "resolved": "https://registry.npmjs.org/@jest/diff-sequences/-/diff-sequences-30.0.0.tgz", + "integrity": "sha512-xMbtoCeKJDto86GW6AiwVv7M4QAuI56R7dVBr1RNGYbOT44M2TIzOiske2RxopBqkumDY+A1H55pGvuribRY9A==", "dev": true, "license": "MIT", "engines": { - "node": ">=8" - } - }, - "node_modules/@jest/core/node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, "node_modules/@jest/environment": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-29.7.0.tgz", - "integrity": "sha512-aQIfHDq33ExsN4jP1NWGXhxgQ/wixs60gDiKO+XVMd8Mn0NWPWgc34ZQDTb2jKaUWQ7MuwoitXAsN2XVXNMpAw==", + "version": "30.0.0", + "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-30.0.0.tgz", + "integrity": "sha512-09sFbMMgS5JxYnvgmmtwIHhvoyzvR5fUPrVl8nOCrC5KdzmmErTcAxfWyAhJ2bv3rvHNQaKiS+COSG+O7oNbXw==", "dev": true, "license": "MIT", "dependencies": { - "@jest/fake-timers": "^29.7.0", - "@jest/types": "^29.6.3", + "@jest/fake-timers": "30.0.0", + "@jest/types": "30.0.0", "@types/node": "*", - "jest-mock": "^29.7.0" + "jest-mock": "30.0.0" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/@jest/environment-jsdom-abstract": { + "version": "30.0.0", + "resolved": "https://registry.npmjs.org/@jest/environment-jsdom-abstract/-/environment-jsdom-abstract-30.0.0.tgz", + "integrity": "sha512-Fcn1eZbH1JK+bqwUVkUVprlQL3xWUrhvOe/4L0PfDkaJOiAz3HUI1m4s0bgmXBYyCyTVogBuUFZkRpAKMox5Dw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/environment": "30.0.0", + "@jest/fake-timers": "30.0.0", + "@jest/types": "30.0.0", + "@types/jsdom": "^21.1.7", + "@types/node": "*", + "jest-mock": "30.0.0", + "jest-util": "30.0.0" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + }, + "peerDependencies": { + "canvas": "^3.0.0", + "jsdom": "*" + }, + "peerDependenciesMeta": { + "canvas": { + "optional": true + } } }, "node_modules/@jest/expect": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/expect/-/expect-29.7.0.tgz", - "integrity": "sha512-8uMeAMycttpva3P1lBHB8VciS9V0XAr3GymPpipdyQXbBcuhkLQOSe8E/p92RyAdToS6ZD1tFkX+CkhoECE0dQ==", + "version": "30.0.0", + "resolved": "https://registry.npmjs.org/@jest/expect/-/expect-30.0.0.tgz", + "integrity": "sha512-XZ3j6syhMeKiBknmmc8V3mNIb44kxLTbOQtaXA4IFdHy+vEN0cnXRzbRjdGBtrp4k1PWyMWNU3Fjz3iejrhpQg==", "dev": true, "license": "MIT", "dependencies": { - "expect": "^29.7.0", - "jest-snapshot": "^29.7.0" + "expect": "30.0.0", + "jest-snapshot": "30.0.0" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, "node_modules/@jest/expect-utils": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-29.7.0.tgz", - "integrity": "sha512-GlsNBWiFQFCVi9QVSx7f5AgMeLxe9YCCs5PuP2O2LdjDAA8Jh9eX7lA1Jq/xdXw3Wb3hyvlFNfZIfcRetSzYcA==", + "version": "30.0.0", + "resolved": "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-30.0.0.tgz", + "integrity": "sha512-UiWfsqNi/+d7xepfOv8KDcbbzcYtkWBe3a3kVDtg6M1kuN6CJ7b4HzIp5e1YHrSaQaVS8sdCoyCMCZClTLNKFQ==", "dev": true, "license": "MIT", "dependencies": { - "jest-get-type": "^29.6.3" + "@jest/get-type": "30.0.0" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, "node_modules/@jest/fake-timers": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-29.7.0.tgz", - "integrity": "sha512-q4DH1Ha4TTFPdxLsqDXK1d3+ioSL7yL5oCMJZgDYm6i+6CygW5E5xVr/D1HdsGxjt1ZWSfUAs9OxSB/BNelWrQ==", + "version": "30.0.0", + "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-30.0.0.tgz", + "integrity": "sha512-yzBmJcrMHAMcAEbV2w1kbxmx8WFpEz8Cth3wjLMSkq+LO8VeGKRhpr5+BUp7PPK+x4njq/b6mVnDR8e/tPL5ng==", "dev": true, "license": "MIT", "dependencies": { - "@jest/types": "^29.6.3", - "@sinonjs/fake-timers": "^10.0.2", + "@jest/types": "30.0.0", + "@sinonjs/fake-timers": "^13.0.0", "@types/node": "*", - "jest-message-util": "^29.7.0", - "jest-mock": "^29.7.0", - "jest-util": "^29.7.0" + "jest-message-util": "30.0.0", + "jest-mock": "30.0.0", + "jest-util": "30.0.0" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/@jest/get-type": { + "version": "30.0.0", + "resolved": "https://registry.npmjs.org/@jest/get-type/-/get-type-30.0.0.tgz", + "integrity": "sha512-VZWMjrBzqfDKngQ7sUctKeLxanAbsBFoZnPxNIG6CmxK7Gv6K44yqd0nzveNIBfuhGZMmk1n5PGbvdSTOu0yTg==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, "node_modules/@jest/globals": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-29.7.0.tgz", - "integrity": "sha512-mpiz3dutLbkW2MNFubUGUEVLkTGiqW6yLVTA+JbP6fI6J5iL9Y0Nlg8k95pcF8ctKwCS7WVxteBs29hhfAotzQ==", + "version": "30.0.0", + "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-30.0.0.tgz", + "integrity": "sha512-OEzYes5A1xwBJVMPqFRa8NCao8Vr42nsUZuf/SpaJWoLE+4kyl6nCQZ1zqfipmCrIXQVALC5qJwKy/7NQQLPhw==", "dev": true, "license": "MIT", "dependencies": { - "@jest/environment": "^29.7.0", - "@jest/expect": "^29.7.0", - "@jest/types": "^29.6.3", - "jest-mock": "^29.7.0" + "@jest/environment": "30.0.0", + "@jest/expect": "30.0.0", + "@jest/types": "30.0.0", + "jest-mock": "30.0.0" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/@jest/pattern": { + "version": "30.0.0", + "resolved": "https://registry.npmjs.org/@jest/pattern/-/pattern-30.0.0.tgz", + "integrity": "sha512-k+TpEThzLVXMkbdxf8KHjZ83Wl+G54ytVJoDIGWwS96Ql4xyASRjc6SU1hs5jHVql+hpyK9G8N7WuFhLpGHRpQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/node": "*", + "jest-regex-util": "30.0.0" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, "node_modules/@jest/reporters": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-29.7.0.tgz", - "integrity": "sha512-DApq0KJbJOEzAFYjHADNNxAE3KbhxQB1y5Kplb5Waqw6zVbuWatSnMjE5gs8FUgEPmNsnZA3NCWl9NG0ia04Pg==", + "version": "30.0.0", + "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-30.0.0.tgz", + "integrity": "sha512-5WHNlLO0Ok+/o6ML5IzgVm1qyERtLHBNhwn67PAq92H4hZ+n5uW/BYj1VVwmTdxIcNrZLxdV9qtpdZkXf16HxA==", "dev": true, "license": "MIT", "dependencies": { "@bcoe/v8-coverage": "^0.2.3", - "@jest/console": "^29.7.0", - "@jest/test-result": "^29.7.0", - "@jest/transform": "^29.7.0", - "@jest/types": "^29.6.3", - "@jridgewell/trace-mapping": "^0.3.18", + "@jest/console": "30.0.0", + "@jest/test-result": "30.0.0", + "@jest/transform": "30.0.0", + "@jest/types": "30.0.0", + "@jridgewell/trace-mapping": "^0.3.25", "@types/node": "*", - "chalk": "^4.0.0", - "collect-v8-coverage": "^1.0.0", - "exit": "^0.1.2", - "glob": "^7.1.3", - "graceful-fs": "^4.2.9", + "chalk": "^4.1.2", + "collect-v8-coverage": "^1.0.2", + "exit-x": "^0.2.2", + "glob": "^10.3.10", + "graceful-fs": "^4.2.11", "istanbul-lib-coverage": "^3.0.0", "istanbul-lib-instrument": "^6.0.0", "istanbul-lib-report": "^3.0.0", - "istanbul-lib-source-maps": "^4.0.0", + "istanbul-lib-source-maps": "^5.0.0", "istanbul-reports": "^3.1.3", - "jest-message-util": "^29.7.0", - "jest-util": "^29.7.0", - "jest-worker": "^29.7.0", + "jest-message-util": "30.0.0", + "jest-util": "30.0.0", + "jest-worker": "30.0.0", "slash": "^3.0.0", - "string-length": "^4.0.1", - "strip-ansi": "^6.0.0", + "string-length": "^4.0.2", "v8-to-istanbul": "^9.0.1" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" }, "peerDependencies": { "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" @@ -3895,178 +3485,220 @@ } } }, - "node_modules/@jest/reporters/node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "node_modules/@jest/reporters/node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } + "license": "MIT" }, "node_modules/@jest/reporters/node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", + "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", "dev": true, "license": "MIT", "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" + "balanced-match": "^1.0.0" } }, "node_modules/@jest/reporters/node_modules/glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "deprecated": "Glob versions prior to v9 are no longer supported", + "version": "10.4.5", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz", + "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==", "dev": true, "license": "ISC", "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" + "foreground-child": "^3.1.0", + "jackspeak": "^3.1.2", + "minimatch": "^9.0.4", + "minipass": "^7.1.2", + "package-json-from-dist": "^1.0.0", + "path-scurry": "^1.11.1" }, - "engines": { - "node": "*" + "bin": { + "glob": "dist/esm/bin.mjs" }, "funding": { "url": "https://github.com/sponsors/isaacs" } }, + "node_modules/@jest/reporters/node_modules/jackspeak": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz", + "integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==", + "dev": true, + "license": "BlueOak-1.0.0", + "dependencies": { + "@isaacs/cliui": "^8.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + }, + "optionalDependencies": { + "@pkgjs/parseargs": "^0.11.0" + } + }, + "node_modules/@jest/reporters/node_modules/lru-cache": { + "version": "10.4.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", + "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", + "dev": true, + "license": "ISC" + }, "node_modules/@jest/reporters/node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", "dev": true, "license": "ISC", "dependencies": { - "brace-expansion": "^1.1.7" + "brace-expansion": "^2.0.1" }, "engines": { - "node": "*" + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/@jest/reporters/node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "node_modules/@jest/reporters/node_modules/path-scurry": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz", + "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==", "dev": true, - "license": "MIT", + "license": "BlueOak-1.0.0", "dependencies": { - "ansi-regex": "^5.0.1" + "lru-cache": "^10.2.0", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" }, "engines": { - "node": ">=8" + "node": ">=16 || 14 >=14.18" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, "node_modules/@jest/schemas": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.3.tgz", - "integrity": "sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==", + "version": "30.0.0", + "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-30.0.0.tgz", + "integrity": "sha512-NID2VRyaEkevCRz6badhfqYwri/RvMbiHY81rk3AkK/LaiB0LSxi1RdVZ7MpZdTjNugtZeGfpL0mLs9Kp3MrQw==", "dev": true, "license": "MIT", "dependencies": { - "@sinclair/typebox": "^0.27.8" + "@sinclair/typebox": "^0.34.0" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/@jest/snapshot-utils": { + "version": "30.0.0", + "resolved": "https://registry.npmjs.org/@jest/snapshot-utils/-/snapshot-utils-30.0.0.tgz", + "integrity": "sha512-C/QSFUmvZEYptg2Vin84FggAphwHvj6la39vkw1CNOZQORWZ7O/H0BXmdeeeGnvlXDYY8TlFM5jgFnxLAxpFjA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/types": "30.0.0", + "chalk": "^4.1.2", + "graceful-fs": "^4.2.11", + "natural-compare": "^1.4.0" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, "node_modules/@jest/source-map": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-29.6.3.tgz", - "integrity": "sha512-MHjT95QuipcPrpLM+8JMSzFx6eHp5Bm+4XeFDJlwsvVBjmKNiIAvasGK2fxz2WbGRlnvqehFbh07MMa7n3YJnw==", + "version": "30.0.0", + "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-30.0.0.tgz", + "integrity": "sha512-oYBJ4d/NF4ZY3/7iq1VaeoERHRvlwKtrGClgescaXMIa1mmb+vfJd0xMgbW9yrI80IUA7qGbxpBWxlITrHkWoA==", "dev": true, "license": "MIT", "dependencies": { - "@jridgewell/trace-mapping": "^0.3.18", - "callsites": "^3.0.0", - "graceful-fs": "^4.2.9" + "@jridgewell/trace-mapping": "^0.3.25", + "callsites": "^3.1.0", + "graceful-fs": "^4.2.11" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, "node_modules/@jest/test-result": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-29.7.0.tgz", - "integrity": "sha512-Fdx+tv6x1zlkJPcWXmMDAG2HBnaR9XPSd5aDWQVsfrZmLVT3lU1cwyxLgRmXR9yrq4NBoEm9BMsfgFzTQAbJYA==", + "version": "30.0.0", + "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-30.0.0.tgz", + "integrity": "sha512-685zco9HdgBaaWiB9T4xjLtBuN0Q795wgaQPpmuAeZPHwHZSoKFAUnozUtU+ongfi4l5VCz8AclOE5LAQdyjxQ==", "dev": true, "license": "MIT", "dependencies": { - "@jest/console": "^29.7.0", - "@jest/types": "^29.6.3", - "@types/istanbul-lib-coverage": "^2.0.0", - "collect-v8-coverage": "^1.0.0" + "@jest/console": "30.0.0", + "@jest/types": "30.0.0", + "@types/istanbul-lib-coverage": "^2.0.6", + "collect-v8-coverage": "^1.0.2" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, "node_modules/@jest/test-sequencer": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-29.7.0.tgz", - "integrity": "sha512-GQwJ5WZVrKnOJuiYiAF52UNUJXgTZx1NHjFSEB0qEMmSZKAkdMoIzw/Cj6x6NF4AvV23AUqDpFzQkN/eYCYTxw==", + "version": "30.0.0", + "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-30.0.0.tgz", + "integrity": "sha512-Hmvv5Yg6UmghXIcVZIydkT0nAK7M/hlXx9WMHR5cLVwdmc14/qUQt3mC72T6GN0olPC6DhmKE6Cd/pHsgDbuqQ==", "dev": true, "license": "MIT", "dependencies": { - "@jest/test-result": "^29.7.0", - "graceful-fs": "^4.2.9", - "jest-haste-map": "^29.7.0", + "@jest/test-result": "30.0.0", + "graceful-fs": "^4.2.11", + "jest-haste-map": "30.0.0", "slash": "^3.0.0" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, "node_modules/@jest/transform": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-29.7.0.tgz", - "integrity": "sha512-ok/BTPFzFKVMwO5eOHRrvnBVHdRy9IrsrW1GpMaQ9MCnilNLXQKmAX8s1YXDFaai9xJpac2ySzV0YeRRECr2Vw==", + "version": "30.0.0", + "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-30.0.0.tgz", + "integrity": "sha512-8xhpsCGYJsUjqpJOgLyMkeOSSlhqggFZEWAnZquBsvATtueoEs7CkMRxOUmJliF3E5x+mXmZ7gEEsHank029Og==", "dev": true, "license": "MIT", "dependencies": { - "@babel/core": "^7.11.6", - "@jest/types": "^29.6.3", - "@jridgewell/trace-mapping": "^0.3.18", - "babel-plugin-istanbul": "^6.1.1", - "chalk": "^4.0.0", + "@babel/core": "^7.27.4", + "@jest/types": "30.0.0", + "@jridgewell/trace-mapping": "^0.3.25", + "babel-plugin-istanbul": "^7.0.0", + "chalk": "^4.1.2", "convert-source-map": "^2.0.0", "fast-json-stable-stringify": "^2.1.0", - "graceful-fs": "^4.2.9", - "jest-haste-map": "^29.7.0", - "jest-regex-util": "^29.6.3", - "jest-util": "^29.7.0", - "micromatch": "^4.0.4", - "pirates": "^4.0.4", + "graceful-fs": "^4.2.11", + "jest-haste-map": "30.0.0", + "jest-regex-util": "30.0.0", + "jest-util": "30.0.0", + "micromatch": "^4.0.8", + "pirates": "^4.0.7", "slash": "^3.0.0", - "write-file-atomic": "^4.0.2" + "write-file-atomic": "^5.0.1" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, "node_modules/@jest/types": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz", - "integrity": "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==", + "version": "30.0.0", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-30.0.0.tgz", + "integrity": "sha512-1Nox8mAL52PKPfEnUQWBvKU/bp8FTT6AiDu76bFDEJj/qsRFSAVSldfCH3XYMqialti2zHXKvD5gN0AaHc0yKA==", "dev": true, "license": "MIT", "dependencies": { - "@jest/schemas": "^29.6.3", - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", + "@jest/pattern": "30.0.0", + "@jest/schemas": "30.0.0", + "@types/istanbul-lib-coverage": "^2.0.6", + "@types/istanbul-reports": "^3.0.4", "@types/node": "*", - "@types/yargs": "^17.0.8", - "chalk": "^4.0.0" + "@types/yargs": "^17.0.33", + "chalk": "^4.1.2" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, "node_modules/@jridgewell/gen-mapping": { @@ -4207,84 +3839,6 @@ "dev": true, "license": "MIT" }, - "node_modules/@malept/cross-spawn-promise": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@malept/cross-spawn-promise/-/cross-spawn-promise-2.0.0.tgz", - "integrity": "sha512-1DpKU0Z5ThltBwjNySMC14g0CkbyhCaz9FkhxqNsZI6uAPJXFS8cMXlBKo26FJ8ZuW6S9GCMcR9IO5k2X5/9Fg==", - "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://github.com/sponsors/malept" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/subscription/pkg/npm-.malept-cross-spawn-promise?utm_medium=referral&utm_source=npm_fund" - } - ], - "license": "Apache-2.0", - "dependencies": { - "cross-spawn": "^7.0.1" - }, - "engines": { - "node": ">= 12.13.0" - } - }, - "node_modules/@malept/flatpak-bundler": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/@malept/flatpak-bundler/-/flatpak-bundler-0.4.0.tgz", - "integrity": "sha512-9QOtNffcOF/c1seMCDnjckb3R9WHcG34tky+FHpNKKCW0wc/scYLwMtO+ptyGUfMW0/b/n4qRiALlaFHc9Oj7Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "debug": "^4.1.1", - "fs-extra": "^9.0.0", - "lodash": "^4.17.15", - "tmp-promise": "^3.0.2" - }, - "engines": { - "node": ">= 10.0.0" - } - }, - "node_modules/@malept/flatpak-bundler/node_modules/fs-extra": { - "version": "9.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", - "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "at-least-node": "^1.0.0", - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/@malept/flatpak-bundler/node_modules/jsonfile": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", - "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "universalify": "^2.0.0" - }, - "optionalDependencies": { - "graceful-fs": "^4.1.6" - } - }, - "node_modules/@malept/flatpak-bundler/node_modules/universalify": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", - "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 10.0.0" - } - }, "node_modules/@module-federation/error-codes": { "version": "0.14.3", "resolved": "https://registry.npmjs.org/@module-federation/error-codes/-/error-codes-0.14.3.tgz", @@ -4381,6 +3935,19 @@ "webpack": "^5.0.0" } }, + "node_modules/@napi-rs/wasm-runtime": { + "version": "0.2.11", + "resolved": "https://registry.npmjs.org/@napi-rs/wasm-runtime/-/wasm-runtime-0.2.11.tgz", + "integrity": "sha512-9DPkXtvHydrcOsopiYpUgPHpmj0HWZKMUnL2dZqpvC42lsratuBG06V5ipyno0fUek5VlFsNQ+AcFATSrJXgMA==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "@emnapi/core": "^1.4.3", + "@emnapi/runtime": "^1.4.3", + "@tybys/wasm-util": "^0.9.0" + } + }, "node_modules/@nodelib/fs.scandir": { "version": "2.1.5", "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", @@ -4771,20 +4338,6 @@ "url": "https://opencollective.com/parcel" } }, - "node_modules/@parcel/watcher/node_modules/detect-libc": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz", - "integrity": "sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg==", - "dev": true, - "license": "Apache-2.0", - "optional": true, - "bin": { - "detect-libc": "bin/detect-libc.js" - }, - "engines": { - "node": ">=0.10" - } - }, "node_modules/@parcel/watcher/node_modules/node-addon-api": { "version": "7.1.1", "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-7.1.1.tgz", @@ -4804,14 +4357,27 @@ "node": ">=14" } }, + "node_modules/@pkgr/core": { + "version": "0.2.7", + "resolved": "https://registry.npmjs.org/@pkgr/core/-/core-0.2.7.tgz", + "integrity": "sha512-YLT9Zo3oNPJoBjBc4q8G2mjU4tqIbf5CEOORbUUr48dCD9q3umJ3IPlVqOqDakPfd2HuwccBaqlGhN4Gmr5OWg==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^12.20.0 || ^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/pkgr" + } + }, "node_modules/@playwright/test": { - "version": "1.52.0", - "resolved": "https://registry.npmjs.org/@playwright/test/-/test-1.52.0.tgz", - "integrity": "sha512-uh6W7sb55hl7D6vsAeA+V2p5JnlAqzhqFyF0VcJkKZXkgnFcVG9PziERRHQfPLfNGx1C292a4JqbWzhR8L4R1g==", + "version": "1.53.0", + "resolved": "https://registry.npmjs.org/@playwright/test/-/test-1.53.0.tgz", + "integrity": "sha512-15hjKreZDcp7t6TL/7jkAo6Df5STZN09jGiv5dbP9A6vMVncXRqE7/B2SncsyOwrkZRBH2i6/TPOL8BVmm3c7w==", "dev": true, "license": "Apache-2.0", "dependencies": { - "playwright": "1.52.0" + "playwright": "1.53.0" }, "bin": { "playwright": "cli.js" @@ -4821,28 +4387,28 @@ } }, "node_modules/@rspack/binding": { - "version": "1.3.13", - "resolved": "https://registry.npmjs.org/@rspack/binding/-/binding-1.3.13.tgz", - "integrity": "sha512-BdM6tfLCP7/0H5uGc+okG6AYsU9JEnR5bRHq4YuGaS4tb+N5ct0czm0LprGMZ7zRAnIql/zoLn/bHlheNxZw3g==", + "version": "1.3.15", + "resolved": "https://registry.npmjs.org/@rspack/binding/-/binding-1.3.15.tgz", + "integrity": "sha512-utNPuJglLO5lW9XbwIqjB7+2ilMo6JkuVLTVdnNVKU94FW7asn9F/qV+d+MgjUVqU1QPCGm0NuGO9xhbgeJ7pg==", "dev": true, "license": "MIT", "peer": true, "optionalDependencies": { - "@rspack/binding-darwin-arm64": "1.3.13", - "@rspack/binding-darwin-x64": "1.3.13", - "@rspack/binding-linux-arm64-gnu": "1.3.13", - "@rspack/binding-linux-arm64-musl": "1.3.13", - "@rspack/binding-linux-x64-gnu": "1.3.13", - "@rspack/binding-linux-x64-musl": "1.3.13", - "@rspack/binding-win32-arm64-msvc": "1.3.13", - "@rspack/binding-win32-ia32-msvc": "1.3.13", - "@rspack/binding-win32-x64-msvc": "1.3.13" + "@rspack/binding-darwin-arm64": "1.3.15", + "@rspack/binding-darwin-x64": "1.3.15", + "@rspack/binding-linux-arm64-gnu": "1.3.15", + "@rspack/binding-linux-arm64-musl": "1.3.15", + "@rspack/binding-linux-x64-gnu": "1.3.15", + "@rspack/binding-linux-x64-musl": "1.3.15", + "@rspack/binding-win32-arm64-msvc": "1.3.15", + "@rspack/binding-win32-ia32-msvc": "1.3.15", + "@rspack/binding-win32-x64-msvc": "1.3.15" } }, "node_modules/@rspack/binding-darwin-arm64": { - "version": "1.3.13", - "resolved": "https://registry.npmjs.org/@rspack/binding-darwin-arm64/-/binding-darwin-arm64-1.3.13.tgz", - "integrity": "sha512-1c+KC+TFaKRWu+SO4cJZ5oHKOFuDhTIitbSIG9boJpDRoZmJxHDmFyTTxVI2r2QUjxJaDdUlSFepybhhJ3UiPg==", + "version": "1.3.15", + "resolved": "https://registry.npmjs.org/@rspack/binding-darwin-arm64/-/binding-darwin-arm64-1.3.15.tgz", + "integrity": "sha512-f+DnVRENRdVe+ufpZeqTtWAUDSTnP48jVo7x9KWsXf8XyJHUi+eHKEPrFoy1HvL1/k5yJ3HVnFBh1Hb9cNIwSg==", "cpu": [ "arm64" ], @@ -4855,9 +4421,9 @@ "peer": true }, "node_modules/@rspack/binding-darwin-x64": { - "version": "1.3.13", - "resolved": "https://registry.npmjs.org/@rspack/binding-darwin-x64/-/binding-darwin-x64-1.3.13.tgz", - "integrity": "sha512-YBF+XjoGSjhJ5o/xOaCBd39BntMudMeup11j2Dz+rrTH+wG6TvH017HYIgDMT3UBVv66eNsQpzA0ZW5raJ0lbA==", + "version": "1.3.15", + "resolved": "https://registry.npmjs.org/@rspack/binding-darwin-x64/-/binding-darwin-x64-1.3.15.tgz", + "integrity": "sha512-TfUvEIBqYUT2OK01BYXb2MNcZeZIhAnJy/5aj0qV0uy4KlvwW63HYcKWa1sFd4Ac7bnGShDkanvP3YEuHOFOyg==", "cpu": [ "x64" ], @@ -4870,9 +4436,9 @@ "peer": true }, "node_modules/@rspack/binding-linux-arm64-gnu": { - "version": "1.3.13", - "resolved": "https://registry.npmjs.org/@rspack/binding-linux-arm64-gnu/-/binding-linux-arm64-gnu-1.3.13.tgz", - "integrity": "sha512-II71Ez7Z0/5ZpcK+kCgvXFKK0AysS9La8LNQbqf2wmzxDJi5H8eVUiwkM5BabICxzOWYtTGJLZ89QbCYaFbqCg==", + "version": "1.3.15", + "resolved": "https://registry.npmjs.org/@rspack/binding-linux-arm64-gnu/-/binding-linux-arm64-gnu-1.3.15.tgz", + "integrity": "sha512-D/YjYk9snKvYm1Elotq8/GsEipB4ZJWVv/V8cZ+ohhFNOPzygENi6JfyI06TryBTQiN0/JDZqt/S9RaWBWnMqw==", "cpu": [ "arm64" ], @@ -4885,9 +4451,9 @@ "peer": true }, "node_modules/@rspack/binding-linux-arm64-musl": { - "version": "1.3.13", - "resolved": "https://registry.npmjs.org/@rspack/binding-linux-arm64-musl/-/binding-linux-arm64-musl-1.3.13.tgz", - "integrity": "sha512-JFFhqglKVjlWcmmVwdS80Kw6v35yY9xlQJup09mL8gMtiiFiT36wTyTujz15Iv+2+S/Dv0Z+UeUJ99KRbQxgcQ==", + "version": "1.3.15", + "resolved": "https://registry.npmjs.org/@rspack/binding-linux-arm64-musl/-/binding-linux-arm64-musl-1.3.15.tgz", + "integrity": "sha512-lJbBsPMOiR0hYPCSM42yp7QiZjfo0ALtX7ws2wURpsQp3BMfRVAmXU3Ixpo2XCRtG1zj8crHaCmAWOJTS0smsA==", "cpu": [ "arm64" ], @@ -4900,9 +4466,9 @@ "peer": true }, "node_modules/@rspack/binding-linux-x64-gnu": { - "version": "1.3.13", - "resolved": "https://registry.npmjs.org/@rspack/binding-linux-x64-gnu/-/binding-linux-x64-gnu-1.3.13.tgz", - "integrity": "sha512-ogm4rt+PMQHkMg/0mA9VTjfGE3c+YaHZQT8KrFgTsoj2YCW9WO2J/RjdMc6STG4Y10BWO9Ar2azLxxHrKb+8UQ==", + "version": "1.3.15", + "resolved": "https://registry.npmjs.org/@rspack/binding-linux-x64-gnu/-/binding-linux-x64-gnu-1.3.15.tgz", + "integrity": "sha512-qGB8ucHklrzNg6lsAS36VrBsCbOw0acgpQNqTE5cuHWrp1Pu3GFTRiFEogenxEmzoRbohMZt0Ev5grivrcgKBQ==", "cpu": [ "x64" ], @@ -4915,9 +4481,9 @@ "peer": true }, "node_modules/@rspack/binding-linux-x64-musl": { - "version": "1.3.13", - "resolved": "https://registry.npmjs.org/@rspack/binding-linux-x64-musl/-/binding-linux-x64-musl-1.3.13.tgz", - "integrity": "sha512-8icDyXhg1iMKhQ3X2FTgAGQTQqnli9FyqHCuRIBauxy1V4W478Mp9Y+V+ErVUY1YxbZEUrkt3a59hssjGeDEeg==", + "version": "1.3.15", + "resolved": "https://registry.npmjs.org/@rspack/binding-linux-x64-musl/-/binding-linux-x64-musl-1.3.15.tgz", + "integrity": "sha512-qRn6e40fLQP+N2rQD8GAj/h4DakeTIho32VxTIaHRVuzw68ZD7VmKkwn55ssN370ejmey35ZdoNFNE12RBrMZA==", "cpu": [ "x64" ], @@ -4930,9 +4496,9 @@ "peer": true }, "node_modules/@rspack/binding-win32-arm64-msvc": { - "version": "1.3.13", - "resolved": "https://registry.npmjs.org/@rspack/binding-win32-arm64-msvc/-/binding-win32-arm64-msvc-1.3.13.tgz", - "integrity": "sha512-y5XxwxDW4DrPKy+8P6t7I7IbA7B/iXjLoaS0jP/EwjSHWf/EnZzq9MgWqdop1km8Mwx6s1zcj+0qs73jL2N98w==", + "version": "1.3.15", + "resolved": "https://registry.npmjs.org/@rspack/binding-win32-arm64-msvc/-/binding-win32-arm64-msvc-1.3.15.tgz", + "integrity": "sha512-7uJ7dWhO1nWXJiCss6Rslz8hoAxAhFpwpbWja3eHgRb7O4NPHg6MWw63AQSI2aFVakreenfu9yXQqYfpVWJ2dA==", "cpu": [ "arm64" ], @@ -4945,9 +4511,9 @@ "peer": true }, "node_modules/@rspack/binding-win32-ia32-msvc": { - "version": "1.3.13", - "resolved": "https://registry.npmjs.org/@rspack/binding-win32-ia32-msvc/-/binding-win32-ia32-msvc-1.3.13.tgz", - "integrity": "sha512-n24sznsZe3lC8ok6MgsT1nG4lVx3SQ/lZ0g23i2BGMRN8/p+kaC2eoPaHe/4m9Liz/W4Z5LhZCCvg4DQMEzeLA==", + "version": "1.3.15", + "resolved": "https://registry.npmjs.org/@rspack/binding-win32-ia32-msvc/-/binding-win32-ia32-msvc-1.3.15.tgz", + "integrity": "sha512-UsaWTYCjDiSCB0A0qETgZk4QvhwfG8gCrO4SJvA+QSEWOmgSai1YV70prFtLLIiyT9mDt1eU3tPWl1UWPRU/EQ==", "cpu": [ "ia32" ], @@ -4960,9 +4526,9 @@ "peer": true }, "node_modules/@rspack/binding-win32-x64-msvc": { - "version": "1.3.13", - "resolved": "https://registry.npmjs.org/@rspack/binding-win32-x64-msvc/-/binding-win32-x64-msvc-1.3.13.tgz", - "integrity": "sha512-CLyTNo0OrOD7xFKusFciKKG+8CXPowjPz+tcdkkrKYqGzAPzOcszblikITJhMbc7DLMzdTRSZUTkKLRydYH9sw==", + "version": "1.3.15", + "resolved": "https://registry.npmjs.org/@rspack/binding-win32-x64-msvc/-/binding-win32-x64-msvc-1.3.15.tgz", + "integrity": "sha512-ZnDIc9Es8EF94MirPDN+hOMt7tkb8nMEbRJFKLMmNd0ElNPgsql+1cY5SqyGRH1hsKB87KfSUQlhFiKZvzbfIg==", "cpu": [ "x64" ], @@ -4975,15 +4541,15 @@ "peer": true }, "node_modules/@rspack/core": { - "version": "1.3.13", - "resolved": "https://registry.npmjs.org/@rspack/core/-/core-1.3.13.tgz", - "integrity": "sha512-j9jsNzKeEN14yraqX4jAFrM/nMfX5YEPgEMPlp4g5NAu3siaBa8gDF5brbdNq6TDXnTHK1MwwjaMdKA+3YeBKQ==", + "version": "1.3.15", + "resolved": "https://registry.npmjs.org/@rspack/core/-/core-1.3.15.tgz", + "integrity": "sha512-QuElIC8jXSKWAp0LSx18pmbhA7NiA5HGoVYesmai90UVxz98tud0KpMxTVCg+0lrLrnKZfCWN9kwjCxM5pGnrA==", "dev": true, "license": "MIT", "peer": true, "dependencies": { "@module-federation/runtime-tools": "0.14.3", - "@rspack/binding": "1.3.13", + "@rspack/binding": "1.3.15", "@rspack/lite-tapable": "1.0.1" }, "engines": { @@ -5017,25 +4583,12 @@ "license": "MIT" }, "node_modules/@sinclair/typebox": { - "version": "0.27.8", - "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.8.tgz", - "integrity": "sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==", + "version": "0.34.35", + "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.34.35.tgz", + "integrity": "sha512-C6ypdODf2VZkgRT6sFM8E1F8vR+HcffniX0Kp8MsU8PIfrlXbNCBz0jzj17GjdmjTx1OtZzdH8+iALL21UjF5A==", "dev": true, "license": "MIT" }, - "node_modules/@sindresorhus/is": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-4.6.0.tgz", - "integrity": "sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sindresorhus/is?sponsor=1" - } - }, "node_modules/@sinonjs/commons": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-3.0.1.tgz", @@ -5047,13 +4600,13 @@ } }, "node_modules/@sinonjs/fake-timers": { - "version": "10.3.0", - "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-10.3.0.tgz", - "integrity": "sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA==", + "version": "13.0.5", + "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-13.0.5.tgz", + "integrity": "sha512-36/hTbH2uaWuGVERyC6da9YwGWnzUZXuPro/F2LfsdOsLnCojz/iSH8MxUt/FD2S5XBSVPhmArFUXcpCQ2Hkiw==", "dev": true, "license": "BSD-3-Clause", "dependencies": { - "@sinonjs/commons": "^3.0.0" + "@sinonjs/commons": "^3.0.1" } }, "node_modules/@statoscope/cli": { @@ -5145,9 +4698,9 @@ } }, "node_modules/@statoscope/report-writer/node_modules/@types/node": { - "version": "18.19.110", - "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.110.tgz", - "integrity": "sha512-WW2o4gTmREtSnqKty9nhqF/vA0GKd0V/rbC0OyjSk9Bz6bzlsXKT+i7WDdS/a0z74rfT2PO4dArVCSnapNLA5Q==", + "version": "18.19.112", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.112.tgz", + "integrity": "sha512-i+Vukt9POdS/MBI7YrrkkI5fMfwFtOjphSmt4WXYLfwqsfr6z/HdCx7LqT9M7JktGob8WNgj8nFB4TbGNE4Cog==", "dev": true, "license": "MIT", "dependencies": { @@ -5316,9 +4869,9 @@ } }, "node_modules/@statoscope/webpack-plugin/node_modules/@types/node": { - "version": "18.19.110", - "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.110.tgz", - "integrity": "sha512-WW2o4gTmREtSnqKty9nhqF/vA0GKd0V/rbC0OyjSk9Bz6bzlsXKT+i7WDdS/a0z74rfT2PO4dArVCSnapNLA5Q==", + "version": "18.19.112", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.112.tgz", + "integrity": "sha512-i+Vukt9POdS/MBI7YrrkkI5fMfwFtOjphSmt4WXYLfwqsfr6z/HdCx7LqT9M7JktGob8WNgj8nFB4TbGNE4Cog==", "dev": true, "license": "MIT", "dependencies": { @@ -5377,9 +4930,9 @@ } }, "node_modules/@stylistic/eslint-plugin": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/@stylistic/eslint-plugin/-/eslint-plugin-4.4.0.tgz", - "integrity": "sha512-bIh/d9X+OQLCAMdhHtps+frvyjvAM4B1YlSJzcEEhl7wXLIqPar3ngn9DrHhkBOrTA/z9J0bUMtctAspe0dxdQ==", + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/@stylistic/eslint-plugin/-/eslint-plugin-4.4.1.tgz", + "integrity": "sha512-CEigAk7eOLyHvdgmpZsKFwtiqS2wFwI1fn4j09IU9GmD4euFM4jEBAViWeCqaNLlbX2k2+A/Fq9cje4HQBXuJQ==", "dev": true, "license": "MIT", "dependencies": { @@ -5435,17 +4988,267 @@ "stylelint": "^16.8.0" } }, - "node_modules/@szmarczak/http-timer": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-4.0.6.tgz", - "integrity": "sha512-4BAffykYOgO+5nzBWYwE3W90sBgLJoUPRWWcL8wlyiM8IB8ipJz3UMJ9KXQd1RKQXpKp8Tutn80HZtWsu2u76w==", + "node_modules/@tauri-apps/api": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/@tauri-apps/api/-/api-2.8.0.tgz", + "integrity": "sha512-ga7zdhbS2GXOMTIZRT0mYjKJtR9fivsXzsyq5U3vjDL0s6DTMwYRm0UHNjzTY5dh4+LSC68Sm/7WEiimbQNYlw==", + "license": "Apache-2.0 OR MIT", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/tauri" + } + }, + "node_modules/@tauri-apps/cli": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/@tauri-apps/cli/-/cli-2.8.0.tgz", + "integrity": "sha512-2k1xCIDVaqtQ4b0mNUbr22JyPR2EnA/o3FsHf6sT53+5FIK+yzDC17gGopUJ3ikCvvverZ/83phmno0t4KFwUw==", "dev": true, - "license": "MIT", - "dependencies": { - "defer-to-connect": "^2.0.0" + "license": "Apache-2.0 OR MIT", + "bin": { + "tauri": "tauri.js" }, "engines": { - "node": ">=10" + "node": ">= 10" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/tauri" + }, + "optionalDependencies": { + "@tauri-apps/cli-darwin-arm64": "2.8.0", + "@tauri-apps/cli-darwin-x64": "2.8.0", + "@tauri-apps/cli-linux-arm-gnueabihf": "2.8.0", + "@tauri-apps/cli-linux-arm64-gnu": "2.8.0", + "@tauri-apps/cli-linux-arm64-musl": "2.8.0", + "@tauri-apps/cli-linux-riscv64-gnu": "2.8.0", + "@tauri-apps/cli-linux-x64-gnu": "2.8.0", + "@tauri-apps/cli-linux-x64-musl": "2.8.0", + "@tauri-apps/cli-win32-arm64-msvc": "2.8.0", + "@tauri-apps/cli-win32-ia32-msvc": "2.8.0", + "@tauri-apps/cli-win32-x64-msvc": "2.8.0" + } + }, + "node_modules/@tauri-apps/cli-darwin-arm64": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/@tauri-apps/cli-darwin-arm64/-/cli-darwin-arm64-2.8.0.tgz", + "integrity": "sha512-+Ab2XNCTcJztTGM+1ym4uIDGOH7r6tYxwjDqa9/KxkrHdRYeoMxVBa5zQHsnJ/KXfynqagK86t61ys8Ei/tv0Q==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "Apache-2.0 OR MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tauri-apps/cli-darwin-x64": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/@tauri-apps/cli-darwin-x64/-/cli-darwin-x64-2.8.0.tgz", + "integrity": "sha512-DrBK3tf+CWmYC3ma+mhYn7LbXiPARLx27SjYCaErRK6/4hgmOgD0xrDhcRhYT2w7uY1iPhsfkx+ZOWQexH9qOw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "Apache-2.0 OR MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tauri-apps/cli-linux-arm-gnueabihf": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/@tauri-apps/cli-linux-arm-gnueabihf/-/cli-linux-arm-gnueabihf-2.8.0.tgz", + "integrity": "sha512-ZlvSgEcYNQBn07dY+4QOChobnJwVtElMSI7NH+oA6x7pQu2n5JVW7Mu3nntIA05IDEArVVURGA/walDuoR0wIQ==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "Apache-2.0 OR MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tauri-apps/cli-linux-arm64-gnu": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/@tauri-apps/cli-linux-arm64-gnu/-/cli-linux-arm64-gnu-2.8.0.tgz", + "integrity": "sha512-wSQgTDFVJjXDMPrh/Muzl5p1JKAsSUhlT12HYDEc5aEmNHxWH0ng4Gp0QADhwlzUZkiJMqvMva2HzJijQnjELA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "Apache-2.0 OR MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tauri-apps/cli-linux-arm64-musl": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/@tauri-apps/cli-linux-arm64-musl/-/cli-linux-arm64-musl-2.8.0.tgz", + "integrity": "sha512-/bC/v5SzT2pmfWh8NhIaFx0ON4UcdI3LpDjuXeU4y+rXFXRAKKdKnKBshReHr6KC9UxzS8wGSsSe2eTfJnyXWw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "Apache-2.0 OR MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tauri-apps/cli-linux-riscv64-gnu": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/@tauri-apps/cli-linux-riscv64-gnu/-/cli-linux-riscv64-gnu-2.8.0.tgz", + "integrity": "sha512-hzzsrGp3SXXLuJZdjcq1mAmzr9MaBEQy1DYGEn/HEBiwE8EY1Ou27sBistGkl+X/vusmGwgmLuRKe9Mtbb7mNQ==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "Apache-2.0 OR MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tauri-apps/cli-linux-x64-gnu": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/@tauri-apps/cli-linux-x64-gnu/-/cli-linux-x64-gnu-2.8.0.tgz", + "integrity": "sha512-5z0uKFYGcy8pW8dDooRExmCtunz9BEVETlbNTaarTeXueGk1t3jH43k3uQ0/gIeYvL0X/8oWf848CzJdTSpoLQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "Apache-2.0 OR MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tauri-apps/cli-linux-x64-musl": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/@tauri-apps/cli-linux-x64-musl/-/cli-linux-x64-musl-2.8.0.tgz", + "integrity": "sha512-7uHwJUhE5e9NqSPrjAuN69X+I32uxN0V3UGwUB6eLhV7MhCyjroqVdfFqOkIT2rUE/OtSGQiUO7z0ZGfY3OIdQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "Apache-2.0 OR MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tauri-apps/cli-win32-arm64-msvc": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/@tauri-apps/cli-win32-arm64-msvc/-/cli-win32-arm64-msvc-2.8.0.tgz", + "integrity": "sha512-Emzj0BswRbKp3daDZWS7jbiSzJ0pUcaXFIQYC8sHc34vQe4RwbHZc99XKf+J6XRAznXs0piDvW9HQbXs3uVvXA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "Apache-2.0 OR MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tauri-apps/cli-win32-ia32-msvc": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/@tauri-apps/cli-win32-ia32-msvc/-/cli-win32-ia32-msvc-2.8.0.tgz", + "integrity": "sha512-xHWSyiZCzyc5+7djVaB1soOTe++c/siTZ0EC05Or7QYQRQsKRxDpeTCgheN7Z/Sv1cdlvkK1OZgp4+ddB4hTCA==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "Apache-2.0 OR MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tauri-apps/cli-win32-x64-msvc": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/@tauri-apps/cli-win32-x64-msvc/-/cli-win32-x64-msvc-2.8.0.tgz", + "integrity": "sha512-EpkyVj2idqQthfxkjYcLRTaFM+TluywD4RbdVfjnLE060vPM6LYPouDizYZqXRfEsd5LCi1/VAcsqTK9BAC/zA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "Apache-2.0 OR MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tauri-apps/plugin-notification": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/@tauri-apps/plugin-notification/-/plugin-notification-2.3.1.tgz", + "integrity": "sha512-7gqgfANSREKhh35fY1L4j3TUjUdePmU735FYDqRGeIf8nMXWpcx6j4FhN9/4nYz+m0mv79DCTPLqIPTySggGgg==", + "license": "MIT OR Apache-2.0", + "dependencies": { + "@tauri-apps/api": "^2.8.0" + } + }, + "node_modules/@tauri-apps/plugin-process": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@tauri-apps/plugin-process/-/plugin-process-2.3.0.tgz", + "integrity": "sha512-0DNj6u+9csODiV4seSxxRbnLpeGYdojlcctCuLOCgpH9X3+ckVZIEj6H7tRQ7zqWr7kSTEWnrxtAdBb0FbtrmQ==", + "license": "MIT OR Apache-2.0", + "dependencies": { + "@tauri-apps/api": "^2.6.0" + } + }, + "node_modules/@tauri-apps/plugin-shell": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/@tauri-apps/plugin-shell/-/plugin-shell-2.3.1.tgz", + "integrity": "sha512-jjs2WGDO/9z2pjNlydY/F5yYhNsscv99K5lCmU5uKjsVvQ3dRlDhhtVYoa4OLDmktLtQvgvbQjCFibMl6tgGfw==", + "license": "MIT OR Apache-2.0", + "dependencies": { + "@tauri-apps/api": "^2.8.0" + } + }, + "node_modules/@tauri-apps/plugin-updater": { + "version": "2.9.0", + "resolved": "https://registry.npmjs.org/@tauri-apps/plugin-updater/-/plugin-updater-2.9.0.tgz", + "integrity": "sha512-j++sgY8XpeDvzImTrzWA08OqqGqgkNyxczLD7FjNJJx/uXxMZFz5nDcfkyoI/rCjYuj2101Tci/r/HFmOmoxCg==", + "license": "MIT OR Apache-2.0", + "dependencies": { + "@tauri-apps/api": "^2.6.0" } }, "node_modules/@testing-library/jest-dom": { @@ -5544,17 +5347,6 @@ "node": ">=16" } }, - "node_modules/@twbs/fantasticon/node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, "node_modules/@twbs/fantasticon/node_modules/glob": { "version": "7.2.3", "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", @@ -5590,6 +5382,17 @@ "node": "*" } }, + "node_modules/@tybys/wasm-util": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/@tybys/wasm-util/-/wasm-util-0.9.0.tgz", + "integrity": "sha512-6+7nlbMVX/PVDCwaIQ8nTOPveOcFLSt8GcXdx8hD0bt39uWxYT88uXzqTd4fTvqta7oeUJqudepapKNt2DYJFw==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "tslib": "^2.4.0" + } + }, "node_modules/@types/archy": { "version": "0.0.32", "resolved": "https://registry.npmjs.org/@types/archy/-/archy-0.0.32.tgz", @@ -5643,9 +5446,9 @@ } }, "node_modules/@types/body-parser": { - "version": "1.19.5", - "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.5.tgz", - "integrity": "sha512-fB3Zu92ucau0iQ0JMCFQE7b/dv8Ot07NI3KaZIkIUNXq82k4eBAqUaneXfleGY9JWskeS9y+u0nXMyspcuQrCg==", + "version": "1.19.6", + "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.6.tgz", + "integrity": "sha512-HLFeCYgz89uk22N5Qg3dvGvsv46B8GLvKKo1zKG4NybA8U2DiEO3w9lqGg29t/tfLRJpJ6iQxnVw4OnB7MoM9g==", "dev": true, "license": "MIT", "dependencies": { @@ -5663,19 +5466,6 @@ "@types/node": "*" } }, - "node_modules/@types/cacheable-request": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/@types/cacheable-request/-/cacheable-request-6.0.3.tgz", - "integrity": "sha512-IQ3EbTzGxIigb1I3qPZc1rWJnH0BmSKv5QYTalEwweFvyBDLSAe24zP0le/hyi7ecGfZVlIVAg4BZqb8WBwKqw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/http-cache-semantics": "*", - "@types/keyv": "^3.1.4", - "@types/node": "*", - "@types/responselike": "^1.0.0" - } - }, "node_modules/@types/connect": { "version": "3.4.38", "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.38.tgz", @@ -5697,16 +5487,6 @@ "@types/node": "*" } }, - "node_modules/@types/debug": { - "version": "4.1.12", - "resolved": "https://registry.npmjs.org/@types/debug/-/debug-4.1.12.tgz", - "integrity": "sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/ms": "*" - } - }, "node_modules/@types/dom-view-transitions": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/@types/dom-view-transitions/-/dom-view-transitions-1.0.6.tgz", @@ -5737,16 +5517,16 @@ } }, "node_modules/@types/estree": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.7.tgz", - "integrity": "sha512-w28IoSUCJpidD/TGviZwwMJckNESJZXFu7NBZ5YJ4mEUnNraUn9Pm8HSZm/jDF1pDWYKspWE7oVphigUPRakIQ==", + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.8.tgz", + "integrity": "sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==", "dev": true, "license": "MIT" }, "node_modules/@types/express": { - "version": "4.17.22", - "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.22.tgz", - "integrity": "sha512-eZUmSnhRX9YRSkplpz0N+k6NljUUn5l3EWZIKZvYzhvMphEuNiyyy1viH/ejgt66JWgALwC/gtSUAeQKtSwW/w==", + "version": "4.17.23", + "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.23.tgz", + "integrity": "sha512-Crp6WY9aTYP3qPi2wGDo9iUe/rceX01UMhnF1jmwDcKCFM6cx7YhGP/Mpr3y9AASpfHixIG0E6azCcL5OcDHsQ==", "dev": true, "license": "MIT", "dependencies": { @@ -5769,26 +5549,6 @@ "@types/send": "*" } }, - "node_modules/@types/fs-extra": { - "version": "9.0.13", - "resolved": "https://registry.npmjs.org/@types/fs-extra/-/fs-extra-9.0.13.tgz", - "integrity": "sha512-nEnwB++1u5lVDM2UI4c1+5R+FYaKfaAzS4OococimjVm3nQw3TuzH5UNsocrcTBbhnerblyHj4A49qXbIiZdpA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@types/graceful-fs": { - "version": "4.1.9", - "resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.9.tgz", - "integrity": "sha512-olP3sd1qOEe5dXTSaFvQG+02VdRXcdytWLAZsAq1PecU8uqQAhkrnbli7DagjtXKW/Bl7YJbUsa8MPcuc8LHEQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/node": "*" - } - }, "node_modules/@types/hast": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/@types/hast/-/hast-3.0.4.tgz", @@ -5805,17 +5565,10 @@ "dev": true, "license": "MIT" }, - "node_modules/@types/http-cache-semantics": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/@types/http-cache-semantics/-/http-cache-semantics-4.0.4.tgz", - "integrity": "sha512-1m0bIFVc7eJWyve9S0RnuRgcQqF/Xd5QsUZAZeQFr1Q3/p9JWoQQEqmVy+DPTNpGXwhgIetAoYF8JSc33q29QA==", - "dev": true, - "license": "MIT" - }, "node_modules/@types/http-errors": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/@types/http-errors/-/http-errors-2.0.4.tgz", - "integrity": "sha512-D0CFMMtydbJAegzOyHjtiKPLlvnm3iTZyZRSZoLq2mRhDdmLfIWOCYPfQJ4cu2erKghU++QvjcUjp/5h7hESpA==", + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@types/http-errors/-/http-errors-2.0.5.tgz", + "integrity": "sha512-r8Tayk8HJnX0FztbZN7oVqGccWgw98T/0neJphO91KkmOzug1KkofZURD4UaD5uH8AqcFLfdPErnBod0u71/qg==", "dev": true, "license": "MIT" }, @@ -5857,20 +5610,20 @@ } }, "node_modules/@types/jest": { - "version": "29.5.14", - "resolved": "https://registry.npmjs.org/@types/jest/-/jest-29.5.14.tgz", - "integrity": "sha512-ZN+4sdnLUbo8EVvVc2ao0GFW6oVrQRPn4K2lglySj7APvSrgzxHiNNK99us4WDMi57xxA2yggblIAMNhXOotLQ==", + "version": "30.0.0", + "resolved": "https://registry.npmjs.org/@types/jest/-/jest-30.0.0.tgz", + "integrity": "sha512-XTYugzhuwqWjws0CVz8QpM36+T+Dz5mTEBKhNs/esGLnCIlGdRy+Dq78NRjd7ls7r8BC8ZRMOrKlkO1hU0JOwA==", "dev": true, "license": "MIT", "dependencies": { - "expect": "^29.0.0", - "pretty-format": "^29.0.0" + "expect": "^30.0.0", + "pretty-format": "^30.0.0" } }, "node_modules/@types/jsdom": { - "version": "20.0.1", - "resolved": "https://registry.npmjs.org/@types/jsdom/-/jsdom-20.0.1.tgz", - "integrity": "sha512-d0r18sZPmMQr1eG35u12FZfhIXNrnsPU/g5wvRKCUf/tOGilKKwYMYGqh33BNR6ba+2gkHw1EUiHoN3mn7E5IQ==", + "version": "21.1.7", + "resolved": "https://registry.npmjs.org/@types/jsdom/-/jsdom-21.1.7.tgz", + "integrity": "sha512-yOriVnggzrnQ3a9OKOCxaVuSug3w3/SbOj5i7VwXWZEyUNl3bLF9V3MfxGbZKuwqJOQyRfqXyROBB1CoZLFWzA==", "dev": true, "license": "MIT", "dependencies": { @@ -5893,16 +5646,6 @@ "dev": true, "license": "MIT" }, - "node_modules/@types/keyv": { - "version": "3.1.4", - "resolved": "https://registry.npmjs.org/@types/keyv/-/keyv-3.1.4.tgz", - "integrity": "sha512-BQ5aZNSCpj7D6K2ksrRCTmKRLEpnPvWDiLPfoGyhZ++8YtiK9d/3DBKPJgry359X/P1PfruyYwvnvwFjuEiEIg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/node": "*" - } - }, "node_modules/@types/md5": { "version": "2.3.5", "resolved": "https://registry.npmjs.org/@types/md5/-/md5-2.3.5.tgz", @@ -5917,21 +5660,14 @@ "dev": true, "license": "MIT" }, - "node_modules/@types/ms": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/@types/ms/-/ms-2.1.0.tgz", - "integrity": "sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA==", - "dev": true, - "license": "MIT" - }, "node_modules/@types/node": { - "version": "22.15.29", - "resolved": "https://registry.npmjs.org/@types/node/-/node-22.15.29.tgz", - "integrity": "sha512-LNdjOkUDlU1RZb8e1kOIUpN1qQUlzGkEtbVNo53vbrwDg5om6oduhm4SiUaPW5ASTXhAiP0jInWG8Qx9fVlOeQ==", + "version": "24.0.3", + "resolved": "https://registry.npmjs.org/@types/node/-/node-24.0.3.tgz", + "integrity": "sha512-R4I/kzCYAdRLzfiCabn9hxWfbuHS573x+r0dJMkkzThEa7pbrcDWK+9zu3e7aBOouf+rQAciqPFMnxwr0aWgKg==", "devOptional": true, "license": "MIT", "dependencies": { - "undici-types": "~6.21.0" + "undici-types": "~7.8.0" } }, "node_modules/@types/node-forge": { @@ -5977,9 +5713,9 @@ "license": "MIT" }, "node_modules/@types/react": { - "version": "19.1.6", - "resolved": "https://registry.npmjs.org/@types/react/-/react-19.1.6.tgz", - "integrity": "sha512-JeG0rEWak0N6Itr6QUx+X60uQmN+5t3j9r/OVDtWzFXKaj6kD1BwJzOksD0FF6iWxZlbE1kB0q9vtnU2ekqa1Q==", + "version": "19.1.8", + "resolved": "https://registry.npmjs.org/@types/react/-/react-19.1.8.tgz", + "integrity": "sha512-AwAfQ2Wa5bCx9WP8nZL2uMZWod7J7/JSplxbTmBQ5ms6QpqNYm672H0Vu9ZVKVngQ+ii4R/byguVEUZQyeg44g==", "dev": true, "license": "MIT", "dependencies": { @@ -5987,25 +5723,15 @@ } }, "node_modules/@types/react-dom": { - "version": "19.1.5", - "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-19.1.5.tgz", - "integrity": "sha512-CMCjrWucUBZvohgZxkjd6S9h0nZxXjzus6yDfUb+xLxYM7VvjKNH1tQrE9GWLql1XoOP4/Ds3bwFqShHUYraGg==", + "version": "19.1.6", + "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-19.1.6.tgz", + "integrity": "sha512-4hOiT/dwO8Ko0gV1m/TJZYk3y0KBnY9vzDh7W+DH17b2HFSOGgdj33dhihPeuy3l0q23+4e+hoXHV6hCC4dCXw==", "dev": true, "license": "MIT", "peerDependencies": { "@types/react": "^19.0.0" } }, - "node_modules/@types/responselike": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@types/responselike/-/responselike-1.0.3.tgz", - "integrity": "sha512-H/+L+UkTV33uf49PH5pCAUBVPNj2nDBXTN+qS1dOwyyg24l3CcicicCA7ca+HMvJBZcFgl5r8e+RR6elsb4Lyw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/node": "*" - } - }, "node_modules/@types/retry": { "version": "0.12.2", "resolved": "https://registry.npmjs.org/@types/retry/-/retry-0.12.2.tgz", @@ -6021,9 +5747,9 @@ "license": "MIT" }, "node_modules/@types/send": { - "version": "0.17.4", - "resolved": "https://registry.npmjs.org/@types/send/-/send-0.17.4.tgz", - "integrity": "sha512-x2EM6TJOybec7c52BX0ZspPodMsQUd5L6PRwOunVyVUhXiBSKf3AezDL8Dgvgt5o0UfKNfuA0eMLr2wLT4AiBA==", + "version": "0.17.5", + "resolved": "https://registry.npmjs.org/@types/send/-/send-0.17.5.tgz", + "integrity": "sha512-z6F2D3cOStZvuk2SaP6YrwkNO65iTZcwA2ZkSABegdkAh/lf+Aa/YQndZVfmEXT5vgAp6zv06VQ3ejSVjAny4w==", "dev": true, "license": "MIT", "dependencies": { @@ -6042,9 +5768,9 @@ } }, "node_modules/@types/serve-static": { - "version": "1.15.7", - "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.7.tgz", - "integrity": "sha512-W8Ym+h8nhuRwaKPaDw34QUkwsGi6Rc4yYqvKFo5rm2FUEhCFbzVWrxXUxuKK8TASjWsysJY0nsmNCGhCOIsrOw==", + "version": "1.15.8", + "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.8.tgz", + "integrity": "sha512-roei0UY3LhpOJvjbIP6ZZFngyLKl5dskOtDhxY5THRSpO+ZI+nzJ+m5yUMzGrp89YRa7lvknKkMYjqQFGwA7Sg==", "dev": true, "license": "MIT", "dependencies": { @@ -6129,29 +5855,18 @@ "dev": true, "license": "MIT" }, - "node_modules/@types/yauzl": { - "version": "2.10.3", - "resolved": "https://registry.npmjs.org/@types/yauzl/-/yauzl-2.10.3.tgz", - "integrity": "sha512-oJoftv0LSuaDZE3Le4DbKX+KS9G36NzOeSap90UIK0yMA/NhKJhqlSGtNDORNRaIbQfzjXDrQa0ytJ6mNRGz/Q==", - "dev": true, - "license": "MIT", - "optional": true, - "dependencies": { - "@types/node": "*" - } - }, "node_modules/@typescript-eslint/eslint-plugin": { - "version": "8.33.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.33.1.tgz", - "integrity": "sha512-TDCXj+YxLgtvxvFlAvpoRv9MAncDLBV2oT9Bd7YBGC/b/sEURoOYuIwLI99rjWOfY3QtDzO+mk0n4AmdFExW8A==", + "version": "8.34.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.34.1.tgz", + "integrity": "sha512-STXcN6ebF6li4PxwNeFnqF8/2BNDvBupf2OPx2yWNzr6mKNGF7q49VM00Pz5FaomJyqvbXpY6PhO+T9w139YEQ==", "dev": true, "license": "MIT", "dependencies": { "@eslint-community/regexpp": "^4.10.0", - "@typescript-eslint/scope-manager": "8.33.1", - "@typescript-eslint/type-utils": "8.33.1", - "@typescript-eslint/utils": "8.33.1", - "@typescript-eslint/visitor-keys": "8.33.1", + "@typescript-eslint/scope-manager": "8.34.1", + "@typescript-eslint/type-utils": "8.34.1", + "@typescript-eslint/utils": "8.34.1", + "@typescript-eslint/visitor-keys": "8.34.1", "graphemer": "^1.4.0", "ignore": "^7.0.0", "natural-compare": "^1.4.0", @@ -6165,22 +5880,22 @@ "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "@typescript-eslint/parser": "^8.33.1", + "@typescript-eslint/parser": "^8.34.1", "eslint": "^8.57.0 || ^9.0.0", "typescript": ">=4.8.4 <5.9.0" } }, "node_modules/@typescript-eslint/parser": { - "version": "8.33.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.33.1.tgz", - "integrity": "sha512-qwxv6dq682yVvgKKp2qWwLgRbscDAYktPptK4JPojCwwi3R9cwrvIxS4lvBpzmcqzR4bdn54Z0IG1uHFskW4dA==", + "version": "8.34.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.34.1.tgz", + "integrity": "sha512-4O3idHxhyzjClSMJ0a29AcoK0+YwnEqzI6oz3vlRf3xw0zbzt15MzXwItOlnr5nIth6zlY2RENLsOPvhyrKAQA==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/scope-manager": "8.33.1", - "@typescript-eslint/types": "8.33.1", - "@typescript-eslint/typescript-estree": "8.33.1", - "@typescript-eslint/visitor-keys": "8.33.1", + "@typescript-eslint/scope-manager": "8.34.1", + "@typescript-eslint/types": "8.34.1", + "@typescript-eslint/typescript-estree": "8.34.1", + "@typescript-eslint/visitor-keys": "8.34.1", "debug": "^4.3.4" }, "engines": { @@ -6196,14 +5911,14 @@ } }, "node_modules/@typescript-eslint/project-service": { - "version": "8.33.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/project-service/-/project-service-8.33.1.tgz", - "integrity": "sha512-DZR0efeNklDIHHGRpMpR5gJITQpu6tLr9lDJnKdONTC7vvzOlLAG/wcfxcdxEWrbiZApcoBCzXqU/Z458Za5Iw==", + "version": "8.34.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/project-service/-/project-service-8.34.1.tgz", + "integrity": "sha512-nuHlOmFZfuRwLJKDGQOVc0xnQrAmuq1Mj/ISou5044y1ajGNp2BNliIqp7F2LPQ5sForz8lempMFCovfeS1XoA==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/tsconfig-utils": "^8.33.1", - "@typescript-eslint/types": "^8.33.1", + "@typescript-eslint/tsconfig-utils": "^8.34.1", + "@typescript-eslint/types": "^8.34.1", "debug": "^4.3.4" }, "engines": { @@ -6218,14 +5933,14 @@ } }, "node_modules/@typescript-eslint/scope-manager": { - "version": "8.33.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.33.1.tgz", - "integrity": "sha512-dM4UBtgmzHR9bS0Rv09JST0RcHYearoEoo3pG5B6GoTR9XcyeqX87FEhPo+5kTvVfKCvfHaHrcgeJQc6mrDKrA==", + "version": "8.34.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.34.1.tgz", + "integrity": "sha512-beu6o6QY4hJAgL1E8RaXNC071G4Kso2MGmJskCFQhRhg8VOH/FDbC8soP8NHN7e/Hdphwp8G8cE6OBzC8o41ZA==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.33.1", - "@typescript-eslint/visitor-keys": "8.33.1" + "@typescript-eslint/types": "8.34.1", + "@typescript-eslint/visitor-keys": "8.34.1" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -6236,9 +5951,9 @@ } }, "node_modules/@typescript-eslint/tsconfig-utils": { - "version": "8.33.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.33.1.tgz", - "integrity": "sha512-STAQsGYbHCF0/e+ShUQ4EatXQ7ceh3fBCXkNU7/MZVKulrlq1usH7t2FhxvCpuCi5O5oi1vmVaAjrGeL71OK1g==", + "version": "8.34.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.34.1.tgz", + "integrity": "sha512-K4Sjdo4/xF9NEeA2khOb7Y5nY6NSXBnod87uniVYW9kHP+hNlDV8trUSFeynA2uxWam4gIWgWoygPrv9VMWrYg==", "dev": true, "license": "MIT", "engines": { @@ -6253,14 +5968,14 @@ } }, "node_modules/@typescript-eslint/type-utils": { - "version": "8.33.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.33.1.tgz", - "integrity": "sha512-1cG37d9xOkhlykom55WVwG2QRNC7YXlxMaMzqw2uPeJixBFfKWZgaP/hjAObqMN/u3fr5BrTwTnc31/L9jQ2ww==", + "version": "8.34.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.34.1.tgz", + "integrity": "sha512-Tv7tCCr6e5m8hP4+xFugcrwTOucB8lshffJ6zf1mF1TbU67R+ntCc6DzLNKM+s/uzDyv8gLq7tufaAhIBYeV8g==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/typescript-estree": "8.33.1", - "@typescript-eslint/utils": "8.33.1", + "@typescript-eslint/typescript-estree": "8.34.1", + "@typescript-eslint/utils": "8.34.1", "debug": "^4.3.4", "ts-api-utils": "^2.1.0" }, @@ -6277,9 +5992,9 @@ } }, "node_modules/@typescript-eslint/types": { - "version": "8.33.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.33.1.tgz", - "integrity": "sha512-xid1WfizGhy/TKMTwhtVOgalHwPtV8T32MS9MaH50Cwvz6x6YqRIPdD2WvW0XaqOzTV9p5xdLY0h/ZusU5Lokg==", + "version": "8.34.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.34.1.tgz", + "integrity": "sha512-rjLVbmE7HR18kDsjNIZQHxmv9RZwlgzavryL5Lnj2ujIRTeXlKtILHgRNmQ3j4daw7zd+mQgy+uyt6Zo6I0IGA==", "dev": true, "license": "MIT", "engines": { @@ -6291,16 +6006,16 @@ } }, "node_modules/@typescript-eslint/typescript-estree": { - "version": "8.33.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.33.1.tgz", - "integrity": "sha512-+s9LYcT8LWjdYWu7IWs7FvUxpQ/DGkdjZeE/GGulHvv8rvYwQvVaUZ6DE+j5x/prADUgSbbCWZ2nPI3usuVeOA==", + "version": "8.34.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.34.1.tgz", + "integrity": "sha512-rjCNqqYPuMUF5ODD+hWBNmOitjBWghkGKJg6hiCHzUvXRy6rK22Jd3rwbP2Xi+R7oYVvIKhokHVhH41BxPV5mA==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/project-service": "8.33.1", - "@typescript-eslint/tsconfig-utils": "8.33.1", - "@typescript-eslint/types": "8.33.1", - "@typescript-eslint/visitor-keys": "8.33.1", + "@typescript-eslint/project-service": "8.34.1", + "@typescript-eslint/tsconfig-utils": "8.34.1", + "@typescript-eslint/types": "8.34.1", + "@typescript-eslint/visitor-keys": "8.34.1", "debug": "^4.3.4", "fast-glob": "^3.3.2", "is-glob": "^4.0.3", @@ -6319,6 +6034,23 @@ "typescript": ">=4.8.4 <5.9.0" } }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true, + "license": "MIT" + }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/brace-expansion": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", + "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, "node_modules/@typescript-eslint/typescript-estree/node_modules/minimatch": { "version": "9.0.5", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", @@ -6349,16 +6081,16 @@ } }, "node_modules/@typescript-eslint/utils": { - "version": "8.33.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.33.1.tgz", - "integrity": "sha512-52HaBiEQUaRYqAXpfzWSR2U3gxk92Kw006+xZpElaPMg3C4PgM+A5LqwoQI1f9E5aZ/qlxAZxzm42WX+vn92SQ==", + "version": "8.34.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.34.1.tgz", + "integrity": "sha512-mqOwUdZ3KjtGk7xJJnLbHxTuWVn3GO2WZZuM+Slhkun4+qthLdXx32C8xIXbO1kfCECb3jIs3eoxK3eryk7aoQ==", "dev": true, "license": "MIT", "dependencies": { "@eslint-community/eslint-utils": "^4.7.0", - "@typescript-eslint/scope-manager": "8.33.1", - "@typescript-eslint/types": "8.33.1", - "@typescript-eslint/typescript-estree": "8.33.1" + "@typescript-eslint/scope-manager": "8.34.1", + "@typescript-eslint/types": "8.34.1", + "@typescript-eslint/typescript-estree": "8.34.1" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -6373,14 +6105,14 @@ } }, "node_modules/@typescript-eslint/visitor-keys": { - "version": "8.33.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.33.1.tgz", - "integrity": "sha512-3i8NrFcZeeDHJ+7ZUuDkGT+UHq+XoFGsymNK2jZCOHcfEzRQ0BdpRtdpSx/Iyf3MHLWIcLS0COuOPibKQboIiQ==", + "version": "8.34.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.34.1.tgz", + "integrity": "sha512-xoh5rJ+tgsRKoXnkBPFRLZ7rjKM0AfVbC68UZ/ECXoDbfggb9RbEySN359acY1vS3qZ0jVTVWzbtfapwm5ztxw==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.33.1", - "eslint-visitor-keys": "^4.2.0" + "@typescript-eslint/types": "8.34.1", + "eslint-visitor-keys": "^4.2.1" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -6390,6 +6122,282 @@ "url": "https://opencollective.com/typescript-eslint" } }, + "node_modules/@ungap/structured-clone": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.3.0.tgz", + "integrity": "sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==", + "dev": true, + "license": "ISC" + }, + "node_modules/@unrs/resolver-binding-android-arm-eabi": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-android-arm-eabi/-/resolver-binding-android-arm-eabi-1.9.0.tgz", + "integrity": "sha512-h1T2c2Di49ekF2TE8ZCoJkb+jwETKUIPDJ/nO3tJBKlLFPu+fyd93f0rGP/BvArKx2k2HlRM4kqkNarj3dvZlg==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@unrs/resolver-binding-android-arm64": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-android-arm64/-/resolver-binding-android-arm64-1.9.0.tgz", + "integrity": "sha512-sG1NHtgXtX8owEkJ11yn34vt0Xqzi3k9TJ8zppDmyG8GZV4kVWw44FHwKwHeEFl07uKPeC4ZoyuQaGh5ruJYPA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@unrs/resolver-binding-darwin-arm64": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-darwin-arm64/-/resolver-binding-darwin-arm64-1.9.0.tgz", + "integrity": "sha512-nJ9z47kfFnCxN1z/oYZS7HSNsFh43y2asePzTEZpEvK7kGyuShSl3RRXnm/1QaqFL+iP+BjMwuB+DYUymOkA5A==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@unrs/resolver-binding-darwin-x64": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-darwin-x64/-/resolver-binding-darwin-x64-1.9.0.tgz", + "integrity": "sha512-TK+UA1TTa0qS53rjWn7cVlEKVGz2B6JYe0C++TdQjvWYIyx83ruwh0wd4LRxYBM5HeuAzXcylA9BH2trARXJTw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@unrs/resolver-binding-freebsd-x64": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-freebsd-x64/-/resolver-binding-freebsd-x64-1.9.0.tgz", + "integrity": "sha512-6uZwzMRFcD7CcCd0vz3Hp+9qIL2jseE/bx3ZjaLwn8t714nYGwiE84WpaMCYjU+IQET8Vu/+BNAGtYD7BG/0yA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/@unrs/resolver-binding-linux-arm-gnueabihf": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm-gnueabihf/-/resolver-binding-linux-arm-gnueabihf-1.9.0.tgz", + "integrity": "sha512-bPUBksQfrgcfv2+mm+AZinaKq8LCFvt5PThYqRotqSuuZK1TVKkhbVMS/jvSRfYl7jr3AoZLYbDkItxgqMKRkg==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/resolver-binding-linux-arm-musleabihf": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm-musleabihf/-/resolver-binding-linux-arm-musleabihf-1.9.0.tgz", + "integrity": "sha512-uT6E7UBIrTdCsFQ+y0tQd3g5oudmrS/hds5pbU3h4s2t/1vsGWbbSKhBSCD9mcqaqkBwoqlECpUrRJCmldl8PA==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/resolver-binding-linux-arm64-gnu": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm64-gnu/-/resolver-binding-linux-arm64-gnu-1.9.0.tgz", + "integrity": "sha512-vdqBh911wc5awE2bX2zx3eflbyv8U9xbE/jVKAm425eRoOVv/VseGZsqi3A3SykckSpF4wSROkbQPvbQFn8EsA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/resolver-binding-linux-arm64-musl": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm64-musl/-/resolver-binding-linux-arm64-musl-1.9.0.tgz", + "integrity": "sha512-/8JFZ/SnuDr1lLEVsxsuVwrsGquTvT51RZGvyDB/dOK3oYK2UqeXzgeyq6Otp8FZXQcEYqJwxb9v+gtdXn03eQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/resolver-binding-linux-ppc64-gnu": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-ppc64-gnu/-/resolver-binding-linux-ppc64-gnu-1.9.0.tgz", + "integrity": "sha512-FkJjybtrl+rajTw4loI3L6YqSOpeZfDls4SstL/5lsP2bka9TiHUjgMBjygeZEis1oC8LfJTS8FSgpKPaQx2tQ==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/resolver-binding-linux-riscv64-gnu": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-riscv64-gnu/-/resolver-binding-linux-riscv64-gnu-1.9.0.tgz", + "integrity": "sha512-w/NZfHNeDusbqSZ8r/hp8iL4S39h4+vQMc9/vvzuIKMWKppyUGKm3IST0Qv0aOZ1rzIbl9SrDeIqK86ZpUK37w==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/resolver-binding-linux-riscv64-musl": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-riscv64-musl/-/resolver-binding-linux-riscv64-musl-1.9.0.tgz", + "integrity": "sha512-bEPBosut8/8KQbUixPry8zg/fOzVOWyvwzOfz0C0Rw6dp+wIBseyiHKjkcSyZKv/98edrbMknBaMNJfA/UEdqw==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/resolver-binding-linux-s390x-gnu": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-s390x-gnu/-/resolver-binding-linux-s390x-gnu-1.9.0.tgz", + "integrity": "sha512-LDtMT7moE3gK753gG4pc31AAqGUC86j3AplaFusc717EUGF9ZFJ356sdQzzZzkBk1XzMdxFyZ4f/i35NKM/lFA==", + "cpu": [ + "s390x" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/resolver-binding-linux-x64-gnu": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-x64-gnu/-/resolver-binding-linux-x64-gnu-1.9.0.tgz", + "integrity": "sha512-WmFd5KINHIXj8o1mPaT8QRjA9HgSXhN1gl9Da4IZihARihEnOylu4co7i/yeaIpcfsI6sYs33cNZKyHYDh0lrA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/resolver-binding-linux-x64-musl": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-x64-musl/-/resolver-binding-linux-x64-musl-1.9.0.tgz", + "integrity": "sha512-CYuXbANW+WgzVRIl8/QvZmDaZxrqvOldOwlbUjIM4pQ46FJ0W5cinJ/Ghwa/Ng1ZPMJMk1VFdsD/XwmCGIXBWg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/resolver-binding-wasm32-wasi": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-wasm32-wasi/-/resolver-binding-wasm32-wasi-1.9.0.tgz", + "integrity": "sha512-6Rp2WH0OoitMYR57Z6VE8Y6corX8C6QEMWLgOV6qXiJIeZ1F9WGXY/yQ8yDC4iTraotyLOeJ2Asea0urWj2fKQ==", + "cpu": [ + "wasm32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "@napi-rs/wasm-runtime": "^0.2.11" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@unrs/resolver-binding-win32-arm64-msvc": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-win32-arm64-msvc/-/resolver-binding-win32-arm64-msvc-1.9.0.tgz", + "integrity": "sha512-rknkrTRuvujprrbPmGeHi8wYWxmNVlBoNW8+4XF2hXUnASOjmuC9FNF1tGbDiRQWn264q9U/oGtixyO3BT8adQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@unrs/resolver-binding-win32-ia32-msvc": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-win32-ia32-msvc/-/resolver-binding-win32-ia32-msvc-1.9.0.tgz", + "integrity": "sha512-Ceymm+iBl+bgAICtgiHyMLz6hjxmLJKqBim8tDzpX61wpZOx2bPK6Gjuor7I2RiUynVjvvkoRIkrPyMwzBzF3A==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@unrs/resolver-binding-win32-x64-msvc": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-win32-x64-msvc/-/resolver-binding-win32-x64-msvc-1.9.0.tgz", + "integrity": "sha512-k59o9ZyeyS0hAlcaKFezYSH2agQeRFEB7KoQLXl3Nb3rgkqT1NY9Vwy+SqODiLmYnEjxWJVRE/yq2jFVqdIxZw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, "node_modules/@webassemblyjs/ast": { "version": "1.14.1", "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.14.1.tgz", @@ -6604,8 +6612,8 @@ "version": "0.8.10", "resolved": "https://registry.npmjs.org/@xmldom/xmldom/-/xmldom-0.8.10.tgz", "integrity": "sha512-2WALfTl4xo2SkGCYRt6rDTFfk9R1czmBvUQy12gK2KuRKIpWEhcbbzy8EZXtz/jkRqHX8bFEc6FC1HjX4TUWYw==", - "devOptional": true, "license": "MIT", + "optional": true, "engines": { "node": ">=10.0.0" } @@ -6631,21 +6639,6 @@ "dev": true, "license": "MIT" }, - "node_modules/7zip-bin": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/7zip-bin/-/7zip-bin-5.2.0.tgz", - "integrity": "sha512-ukTPVhqG4jNzMro2qA9HSCSSVJN3aN7tlb+hfqYCt3ER0yWroeA2VR38MNrOHLQ/cVj+DaIMad0kFCtWWowh/A==", - "dev": true, - "license": "MIT" - }, - "node_modules/abab": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.6.tgz", - "integrity": "sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==", - "deprecated": "Use your platform's native atob() and btoa() methods instead", - "dev": true, - "license": "BSD-3-Clause" - }, "node_modules/abbrev": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", @@ -6667,20 +6660,10 @@ "node": ">= 0.6" } }, - "node_modules/accepts/node_modules/negotiator": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", - "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, "node_modules/acorn": { - "version": "8.14.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.14.1.tgz", - "integrity": "sha512-OvQ/2pUDKmgfCg++xsTX1wGxfTaszcHVcTctW4UJB4hibJx2HXxxO5UmVgyjMa+ZDsiaf5wWLXYpRWMmBI0QHg==", + "version": "8.15.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.15.0.tgz", + "integrity": "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==", "dev": true, "license": "MIT", "bin": { @@ -6690,17 +6673,6 @@ "node": ">=0.4.0" } }, - "node_modules/acorn-globals": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-7.0.1.tgz", - "integrity": "sha512-umOSDSDrfHbTNPuNpC2NSnnA3LUrqpevPb4T9jRx4MagXNS0rs+gwiTcAvqCRmsD6utzsrzNt+ebm00SNWiC3Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "acorn": "^8.1.0", - "acorn-walk": "^8.0.2" - } - }, "node_modules/acorn-jsx": { "version": "5.3.2", "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", @@ -6711,19 +6683,6 @@ "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" } }, - "node_modules/acorn-walk": { - "version": "8.3.4", - "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.4.tgz", - "integrity": "sha512-ueEepnujpqee2o5aIYnvHU6C0A42MNdsIDeqy5BydrkuC5R1ZuUFnm27EeFJGoEHJQgn3uleRvmTXaJgfXbt4g==", - "dev": true, - "license": "MIT", - "dependencies": { - "acorn": "^8.11.0" - }, - "engines": { - "node": ">=0.4.0" - } - }, "node_modules/agent-base": { "version": "7.1.3", "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.3.tgz", @@ -6820,16 +6779,6 @@ "dev": true, "license": "MIT" }, - "node_modules/ajv-keywords": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", - "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", - "dev": true, - "license": "MIT", - "peerDependencies": { - "ajv": "^6.9.1" - } - }, "node_modules/ansi-align": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-3.0.1.tgz", @@ -6840,61 +6789,6 @@ "string-width": "^4.1.0" } }, - "node_modules/ansi-align/node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/ansi-align/node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true, - "license": "MIT" - }, - "node_modules/ansi-align/node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/ansi-align/node_modules/string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, - "license": "MIT", - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/ansi-align/node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/ansi-escapes": { "version": "4.3.2", "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", @@ -6980,113 +6874,6 @@ "url": "https://github.com/sponsors/jonschlinkert" } }, - "node_modules/app-builder-bin": { - "version": "5.0.0-alpha.12", - "resolved": "https://registry.npmjs.org/app-builder-bin/-/app-builder-bin-5.0.0-alpha.12.tgz", - "integrity": "sha512-j87o0j6LqPL3QRr8yid6c+Tt5gC7xNfYo6uQIQkorAC6MpeayVMZrEDzKmJJ/Hlv7EnOQpaRm53k6ktDYZyB6w==", - "dev": true, - "license": "MIT" - }, - "node_modules/app-builder-lib": { - "version": "26.0.12", - "resolved": "https://registry.npmjs.org/app-builder-lib/-/app-builder-lib-26.0.12.tgz", - "integrity": "sha512-+/CEPH1fVKf6HowBUs6LcAIoRcjeqgvAeoSE+cl7Y7LndyQ9ViGPYibNk7wmhMHzNgHIuIbw4nWADPO+4mjgWw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@develar/schema-utils": "~2.6.5", - "@electron/asar": "3.2.18", - "@electron/fuses": "^1.8.0", - "@electron/notarize": "2.5.0", - "@electron/osx-sign": "1.3.1", - "@electron/rebuild": "3.7.0", - "@electron/universal": "2.0.1", - "@malept/flatpak-bundler": "^0.4.0", - "@types/fs-extra": "9.0.13", - "async-exit-hook": "^2.0.1", - "builder-util": "26.0.11", - "builder-util-runtime": "9.3.1", - "chromium-pickle-js": "^0.2.0", - "config-file-ts": "0.2.8-rc1", - "debug": "^4.3.4", - "dotenv": "^16.4.5", - "dotenv-expand": "^11.0.6", - "ejs": "^3.1.8", - "electron-publish": "26.0.11", - "fs-extra": "^10.1.0", - "hosted-git-info": "^4.1.0", - "is-ci": "^3.0.0", - "isbinaryfile": "^5.0.0", - "js-yaml": "^4.1.0", - "json5": "^2.2.3", - "lazy-val": "^1.0.5", - "minimatch": "^10.0.0", - "plist": "3.1.0", - "resedit": "^1.7.0", - "semver": "^7.3.8", - "tar": "^6.1.12", - "temp-file": "^3.4.0", - "tiny-async-pool": "1.3.0" - }, - "engines": { - "node": ">=14.0.0" - }, - "peerDependencies": { - "dmg-builder": "26.0.12", - "electron-builder-squirrel-windows": "26.0.12" - } - }, - "node_modules/app-builder-lib/node_modules/fs-extra": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", - "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/app-builder-lib/node_modules/jsonfile": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", - "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "universalify": "^2.0.0" - }, - "optionalDependencies": { - "graceful-fs": "^4.1.6" - } - }, - "node_modules/app-builder-lib/node_modules/semver": { - "version": "7.7.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz", - "integrity": "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==", - "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/app-builder-lib/node_modules/universalify": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", - "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 10.0.0" - } - }, "node_modules/aproba": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/aproba/-/aproba-2.0.0.tgz", @@ -7365,23 +7152,6 @@ "node": ">=8" } }, - "node_modules/async": { - "version": "3.2.6", - "resolved": "https://registry.npmjs.org/async/-/async-3.2.6.tgz", - "integrity": "sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA==", - "dev": true, - "license": "MIT" - }, - "node_modules/async-exit-hook": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/async-exit-hook/-/async-exit-hook-2.0.1.tgz", - "integrity": "sha512-NW2cX8m1Q7KPA7a5M2ULQeZ2wR5qI5PAbw5L0UOMxdioVk9PMZ0h1TmyZEkPYrCvYjDlFICusOu1dlEKAAeXBw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.12.0" - } - }, "node_modules/async-function": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/async-function/-/async-function-1.0.0.tgz", @@ -7401,23 +7171,6 @@ "tslib": "^2.4.0" } }, - "node_modules/asynckit": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", - "dev": true, - "license": "MIT" - }, - "node_modules/at-least-node": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz", - "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==", - "dev": true, - "license": "ISC", - "engines": { - "node": ">= 4.0.0" - } - }, "node_modules/autoprefixer": { "version": "10.4.21", "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.21.tgz", @@ -7493,25 +7246,25 @@ } }, "node_modules/babel-jest": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-29.7.0.tgz", - "integrity": "sha512-BrvGY3xZSwEcCzKvKsCi2GgHqDqsYkOP4/by5xCgIwGXQxIEh+8ew3gmrE1y7XRR6LHZIj6yLYnUi/mm2KXKBg==", + "version": "30.0.0", + "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-30.0.0.tgz", + "integrity": "sha512-JQ0DhdFjODbSawDf0026uZuwaqfKkQzk+9mwWkq2XkKFIaMhFVOxlVmbFCOnnC76jATdxrff3IiUAvOAJec6tw==", "dev": true, "license": "MIT", "dependencies": { - "@jest/transform": "^29.7.0", - "@types/babel__core": "^7.1.14", - "babel-plugin-istanbul": "^6.1.1", - "babel-preset-jest": "^29.6.3", - "chalk": "^4.0.0", - "graceful-fs": "^4.2.9", + "@jest/transform": "30.0.0", + "@types/babel__core": "^7.20.5", + "babel-plugin-istanbul": "^7.0.0", + "babel-preset-jest": "30.0.0", + "chalk": "^4.1.2", + "graceful-fs": "^4.2.11", "slash": "^3.0.0" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" }, "peerDependencies": { - "@babel/core": "^7.8.0" + "@babel/core": "^7.11.0" } }, "node_modules/babel-loader": { @@ -7532,53 +7285,35 @@ } }, "node_modules/babel-plugin-istanbul": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz", - "integrity": "sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-7.0.0.tgz", + "integrity": "sha512-C5OzENSx/A+gt7t4VH1I2XsflxyPUmXRFPKBxt33xncdOmq7oROVM3bZv9Ysjjkv8OJYDMa+tKuKMvqU/H3xdw==", "dev": true, "license": "BSD-3-Clause", "dependencies": { "@babel/helper-plugin-utils": "^7.0.0", "@istanbuljs/load-nyc-config": "^1.0.0", - "@istanbuljs/schema": "^0.1.2", - "istanbul-lib-instrument": "^5.0.4", + "@istanbuljs/schema": "^0.1.3", + "istanbul-lib-instrument": "^6.0.2", "test-exclude": "^6.0.0" }, "engines": { - "node": ">=8" - } - }, - "node_modules/babel-plugin-istanbul/node_modules/istanbul-lib-instrument": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz", - "integrity": "sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "@babel/core": "^7.12.3", - "@babel/parser": "^7.14.7", - "@istanbuljs/schema": "^0.1.2", - "istanbul-lib-coverage": "^3.2.0", - "semver": "^6.3.0" - }, - "engines": { - "node": ">=8" + "node": ">=12" } }, "node_modules/babel-plugin-jest-hoist": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-29.6.3.tgz", - "integrity": "sha512-ESAc/RJvGTFEzRwOTT4+lNDk/GNHMkKbNzsvT0qKRfDyyYTskxB5rnU2njIDYVxXCBHHEI1c0YwHob3WaYujOg==", + "version": "30.0.0", + "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-30.0.0.tgz", + "integrity": "sha512-DSRm+US/FCB4xPDD6Rnslb6PAF9Bej1DZ+1u4aTiqJnk7ZX12eHsnDiIOqjGvITCq+u6wLqUhgS+faCNbVY8+g==", "dev": true, "license": "MIT", "dependencies": { - "@babel/template": "^7.3.3", - "@babel/types": "^7.3.3", - "@types/babel__core": "^7.1.14", - "@types/babel__traverse": "^7.0.6" + "@babel/template": "^7.27.2", + "@babel/types": "^7.27.3", + "@types/babel__core": "^7.20.5" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, "node_modules/babel-plugin-polyfill-corejs2": { @@ -7665,26 +7400,26 @@ } }, "node_modules/babel-preset-jest": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-29.6.3.tgz", - "integrity": "sha512-0B3bhxR6snWXJZtR/RliHTDPRgn1sNHOR0yVtq/IiQFyuOVjFS+wuio/R4gSNkyYmKmJB4wGZv2NZanmKmTnNA==", + "version": "30.0.0", + "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-30.0.0.tgz", + "integrity": "sha512-hgEuu/W7gk8QOWUA9+m3Zk+WpGvKc1Egp6rFQEfYxEoM9Fk/q8nuTXNL65OkhwGrTApauEGgakOoWVXj+UfhKw==", "dev": true, "license": "MIT", "dependencies": { - "babel-plugin-jest-hoist": "^29.6.3", - "babel-preset-current-node-syntax": "^1.0.0" + "babel-plugin-jest-hoist": "30.0.0", + "babel-preset-current-node-syntax": "^1.1.0" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" }, "peerDependencies": { - "@babel/core": "^7.0.0" + "@babel/core": "^7.11.0" } }, "node_modules/balanced-match": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-2.0.0.tgz", + "integrity": "sha512-1ugUSr8BHXRnK23KfuYS+gVMC3LB8QGH9W1iGtDPsNWoQbgtXSExkBu2aDR4epiGWZOjZsj6lDl/N/AqqTC3UA==", "dev": true, "license": "MIT" }, @@ -7738,9 +7473,9 @@ } }, "node_modules/bindings": { - "version": "1.7.0", - "resolved": "git+ssh://git@github.com/zubiden/node-bindings.git#1f689378b1cd26f99d3b7156fe40a520365d1272", - "integrity": "sha512-Nc238Qrgx2AueyrulNnipcdParmRnHK68M1PQLpcjBc1QmeXeCWoPVxxMxHuQomBGv3NiFUxNHpQ4KIpuOKC3g==", + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz", + "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==", "dev": true, "license": "MIT", "dependencies": { @@ -7754,43 +7489,6 @@ "dev": true, "license": "(MIT OR Apache-2.0)" }, - "node_modules/bl": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", - "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", - "dev": true, - "license": "MIT", - "dependencies": { - "buffer": "^5.5.0", - "inherits": "^2.0.4", - "readable-stream": "^3.4.0" - } - }, - "node_modules/bl/node_modules/buffer": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", - "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT", - "dependencies": { - "base64-js": "^1.3.1", - "ieee754": "^1.1.13" - } - }, "node_modules/body-parser": { "version": "1.20.3", "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.3.tgz", @@ -7874,15 +7572,6 @@ "dev": true, "license": "ISC" }, - "node_modules/boolean": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/boolean/-/boolean-3.2.0.tgz", - "integrity": "sha512-d0II/GO9uf9lfUHH2BQsjxzRJZBdsjgsBiW4BvhWk/3qoKwQFjIDVN19PfX8F2D/r9PCMTtLWjYVCFrpeYUzsw==", - "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.", - "dev": true, - "license": "MIT", - "optional": true - }, "node_modules/boxen": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/boxen/-/boxen-7.0.0.tgz", @@ -7964,15 +7653,23 @@ } }, "node_modules/brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", + "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", "dev": true, "license": "MIT", "dependencies": { - "balanced-match": "^1.0.0" + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" } }, + "node_modules/brace-expansion/node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true, + "license": "MIT" + }, "node_modules/braces": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", @@ -7986,97 +7683,6 @@ "node": ">=8" } }, - "node_modules/browserlist": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/browserlist/-/browserlist-1.0.1.tgz", - "integrity": "sha512-nYq9jiWv+qXcgrJxQzivfEc7Wo2GvAKkeRViE5L3cUJpq4SZO6NZR710I/8T+OjE5BPECbzpm8rpUkwslE3nTg==", - "dev": true, - "license": "MIT", - "dependencies": { - "chalk": "^2.4.1" - }, - "bin": { - "browserlist": "cli.js" - } - }, - "node_modules/browserlist/node_modules/ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "license": "MIT", - "dependencies": { - "color-convert": "^1.9.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/browserlist/node_modules/chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/browserlist/node_modules/color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dev": true, - "license": "MIT", - "dependencies": { - "color-name": "1.1.3" - } - }, - "node_modules/browserlist/node_modules/color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", - "dev": true, - "license": "MIT" - }, - "node_modules/browserlist/node_modules/escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/browserlist/node_modules/has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/browserlist/node_modules/supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "license": "MIT", - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, "node_modules/browserslist": { "version": "4.25.0", "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.25.0.tgz", @@ -8145,16 +7751,6 @@ "ieee754": "^1.2.1" } }, - "node_modules/buffer-crc32": { - "version": "0.2.13", - "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", - "integrity": "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": "*" - } - }, "node_modules/buffer-from": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", @@ -8175,84 +7771,6 @@ "node": ">=8.12.0" } }, - "node_modules/builder-util": { - "version": "26.0.11", - "resolved": "https://registry.npmjs.org/builder-util/-/builder-util-26.0.11.tgz", - "integrity": "sha512-xNjXfsldUEe153h1DraD0XvDOpqGR0L5eKFkdReB7eFW5HqysDZFfly4rckda6y9dF39N3pkPlOblcfHKGw+uA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/debug": "^4.1.6", - "7zip-bin": "~5.2.0", - "app-builder-bin": "5.0.0-alpha.12", - "builder-util-runtime": "9.3.1", - "chalk": "^4.1.2", - "cross-spawn": "^7.0.6", - "debug": "^4.3.4", - "fs-extra": "^10.1.0", - "http-proxy-agent": "^7.0.0", - "https-proxy-agent": "^7.0.0", - "is-ci": "^3.0.0", - "js-yaml": "^4.1.0", - "sanitize-filename": "^1.6.3", - "source-map-support": "^0.5.19", - "stat-mode": "^1.0.0", - "temp-file": "^3.4.0", - "tiny-async-pool": "1.3.0" - } - }, - "node_modules/builder-util-runtime": { - "version": "9.3.1", - "resolved": "https://registry.npmjs.org/builder-util-runtime/-/builder-util-runtime-9.3.1.tgz", - "integrity": "sha512-2/egrNDDnRaxVwK3A+cJq6UOlqOdedGA7JPqCeJjN2Zjk1/QB/6QUi3b714ScIGS7HafFXTyzJEOr5b44I3kvQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "debug": "^4.3.4", - "sax": "^1.2.4" - }, - "engines": { - "node": ">=12.0.0" - } - }, - "node_modules/builder-util/node_modules/fs-extra": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", - "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/builder-util/node_modules/jsonfile": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", - "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "universalify": "^2.0.0" - }, - "optionalDependencies": { - "graceful-fs": "^4.1.6" - } - }, - "node_modules/builder-util/node_modules/universalify": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", - "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 10.0.0" - } - }, "node_modules/bundle-name": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/bundle-name/-/bundle-name-4.1.0.tgz", @@ -8309,6 +7827,23 @@ "node": "^12.13.0 || ^14.15.0 || >=16.0.0" } }, + "node_modules/cacache/node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true, + "license": "MIT" + }, + "node_modules/cacache/node_modules/brace-expansion": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", + "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, "node_modules/cacache/node_modules/glob": { "version": "8.1.0", "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", @@ -8374,9 +7909,9 @@ "license": "ISC" }, "node_modules/cacheable": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/cacheable/-/cacheable-1.9.0.tgz", - "integrity": "sha512-8D5htMCxPDUULux9gFzv30f04Xo3wCnik0oOxKoRTPIBoqA7HtOcJ87uBhQTs3jCfZZTrUBGsYIZOgE0ZRgMAg==", + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/cacheable/-/cacheable-1.10.0.tgz", + "integrity": "sha512-SSgQTAnhd7WlJXnGlIi4jJJOiHzgnM5wRMEPaXAU4kECTAMpBoYKoZ9i5zHmclIEZbxcu3j7yY/CF8DTmwIsHg==", "dev": true, "license": "MIT", "dependencies": { @@ -8384,39 +7919,10 @@ "keyv": "^5.3.3" } }, - "node_modules/cacheable-lookup": { - "version": "5.0.4", - "resolved": "https://registry.npmjs.org/cacheable-lookup/-/cacheable-lookup-5.0.4.tgz", - "integrity": "sha512-2/kNscPhpcxrOigMZzbiWF7dz8ilhb/nIHU3EyZiXWXpeq/au8qJ8VhdftMkty3n7Gj6HIGalQG8oiBNB3AJgA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10.6.0" - } - }, - "node_modules/cacheable-request": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-7.0.4.tgz", - "integrity": "sha512-v+p6ongsrp0yTGbJXjgxPow2+DL93DASP4kXCDKb8/bwRtt9OEF3whggkkDkGNzgcWy2XaF4a8nZglC7uElscg==", - "dev": true, - "license": "MIT", - "dependencies": { - "clone-response": "^1.0.2", - "get-stream": "^5.1.0", - "http-cache-semantics": "^4.0.0", - "keyv": "^4.0.0", - "lowercase-keys": "^2.0.0", - "normalize-url": "^6.0.1", - "responselike": "^2.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/cacheable/node_modules/keyv": { - "version": "5.3.3", - "resolved": "https://registry.npmjs.org/keyv/-/keyv-5.3.3.tgz", - "integrity": "sha512-Rwu4+nXI9fqcxiEHtbkvoes2X+QfkTRo1TMkPfwzipGsJlJO/z69vqB4FNl9xJ3xCpAcbkvmEabZfPzrwN3+gQ==", + "version": "5.3.4", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-5.3.4.tgz", + "integrity": "sha512-ypEvQvInNpUe+u+w8BIcPkQvEqXquyyibWE/1NB5T2BTzIpS5cGEV1LZskDzPSTvNAaT4+5FutvzlvnkxOSKlw==", "dev": true, "license": "MIT", "dependencies": { @@ -8505,9 +8011,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001720", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001720.tgz", - "integrity": "sha512-Ec/2yV2nNPwb4DnTANEV99ZWwm3ZWfdlfkQbWSDDt+PsXEVYwlhPH8tdMaPunYTKKmz7AnHi2oNEi1GcmKCD8g==", + "version": "1.0.30001723", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001723.tgz", + "integrity": "sha512-1R/elMjtehrFejxwmexeXAtae5UO9iSyFn6G/I806CYC/BLyyBk1EPhrKBkWhy6wM6Xnm47dSJQec+tLJ39WHw==", "dev": true, "funding": [ { @@ -8624,17 +8130,10 @@ "node": ">=6.0" } }, - "node_modules/chromium-pickle-js": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/chromium-pickle-js/-/chromium-pickle-js-0.2.0.tgz", - "integrity": "sha512-1R5Fho+jBq0DDydt+/vHWj5KJNJCKdARKOCwZUen84I5BreWoLqRLANH1U87eJy1tiASPtMnGqJJq0ZsLoRPOw==", - "dev": true, - "license": "MIT" - }, "node_modules/ci-info": { - "version": "3.9.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.9.0.tgz", - "integrity": "sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-4.2.0.tgz", + "integrity": "sha512-cYY9mypksY8NRqgDB1XD1RiJL338v/551niynFTGkZOO2LHuB2OmOYxDIe/ttN9AHwrqdum1360G3ald0W9kCg==", "dev": true, "funding": [ { @@ -8648,9 +8147,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.1.0", + "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-2.1.0.tgz", + "integrity": "sha512-UX0OwmYRYQQetfrLEZeewIFFI+wSTofC+pMBLNuH3RUuu/xzG1oz84UCEDOSoQlN3fZ4+AzmV50ZYvGqkMh9yA==", "dev": true, "license": "MIT" }, @@ -8706,31 +8205,18 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/cli-spinners": { - "version": "2.9.2", - "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.9.2.tgz", - "integrity": "sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/cli-truncate": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-4.0.0.tgz", - "integrity": "sha512-nPdaFdQ0h/GEigbPClz11D0v/ZJEwxmeVZGeMo3Z5StPtUTkA9o1lD6QwoirYiSDzbcwn2XcjwmCp68W1IS4TA==", - "dev": true, + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-2.1.0.tgz", + "integrity": "sha512-n8fOixwDD6b/ObinzTrp1ZKFzbgvKZvuz/TvejnLn1aQfC6r52XEx85FmuC+3HI+JM7coBRXUvNqEU2PHVrHpg==", "license": "MIT", + "optional": true, "dependencies": { - "slice-ansi": "^5.0.0", - "string-width": "^7.0.0" + "slice-ansi": "^3.0.0", + "string-width": "^4.2.0" }, "engines": { - "node": ">=18" + "node": ">=8" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" @@ -8779,38 +8265,6 @@ "node": ">=8" } }, - "node_modules/cliui/node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true, - "license": "MIT" - }, - "node_modules/cliui/node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/cliui/node_modules/string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, - "license": "MIT", - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/cliui/node_modules/strip-ansi": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", @@ -8842,16 +8296,6 @@ "url": "https://github.com/chalk/wrap-ansi?sponsor=1" } }, - "node_modules/clone": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", - "integrity": "sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.8" - } - }, "node_modules/clone-deep": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz", @@ -8880,19 +8324,6 @@ "node": ">=0.10.0" } }, - "node_modules/clone-response": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.3.tgz", - "integrity": "sha512-ROoL94jJH2dUVML2Y/5PEDNaSHgeOdSDicUyS7izcF63G6sTc/FTjLub4b8Il9S8S0beOfYt0TaA5qvFK+w0wA==", - "dev": true, - "license": "MIT", - "dependencies": { - "mimic-response": "^1.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/co": { "version": "4.6.0", "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", @@ -8955,19 +8386,6 @@ "dev": true, "license": "MIT" }, - "node_modules/combined-stream": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", - "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", - "dev": true, - "license": "MIT", - "dependencies": { - "delayed-stream": "~1.0.0" - }, - "engines": { - "node": ">= 0.8" - } - }, "node_modules/commander": { "version": "11.1.0", "resolved": "https://registry.npmjs.org/commander/-/commander-11.1.0.tgz", @@ -8985,16 +8403,6 @@ "dev": true, "license": "MIT" }, - "node_modules/compare-version": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/compare-version/-/compare-version-0.1.2.tgz", - "integrity": "sha512-pJDh5/4wrEnXX/VWRZvruAGHkzKdr46z11OlTPN+VrATlWWhSKewNCJ1futCO5C7eJB3nPMFZA1LeYtcFboZ2A==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/compare-versions": { "version": "6.1.1", "resolved": "https://registry.npmjs.org/compare-versions/-/compare-versions-6.1.1.tgz", @@ -9107,94 +8515,6 @@ "url": "https://github.com/chalk/supports-color?sponsor=1" } }, - "node_modules/config-file-ts": { - "version": "0.2.8-rc1", - "resolved": "https://registry.npmjs.org/config-file-ts/-/config-file-ts-0.2.8-rc1.tgz", - "integrity": "sha512-GtNECbVI82bT4RiDIzBSVuTKoSHufnU7Ce7/42bkWZJZFLjmDF2WBpVsvRkhKCfKBnTBb3qZrBwPpFBU/Myvhg==", - "dev": true, - "license": "MIT", - "dependencies": { - "glob": "^10.3.12", - "typescript": "^5.4.3" - } - }, - "node_modules/config-file-ts/node_modules/glob": { - "version": "10.4.5", - "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz", - "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==", - "dev": true, - "license": "ISC", - "dependencies": { - "foreground-child": "^3.1.0", - "jackspeak": "^3.1.2", - "minimatch": "^9.0.4", - "minipass": "^7.1.2", - "package-json-from-dist": "^1.0.0", - "path-scurry": "^1.11.1" - }, - "bin": { - "glob": "dist/esm/bin.mjs" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/config-file-ts/node_modules/jackspeak": { - "version": "3.4.3", - "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz", - "integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==", - "dev": true, - "license": "BlueOak-1.0.0", - "dependencies": { - "@isaacs/cliui": "^8.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - }, - "optionalDependencies": { - "@pkgjs/parseargs": "^0.11.0" - } - }, - "node_modules/config-file-ts/node_modules/lru-cache": { - "version": "10.4.3", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", - "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", - "dev": true, - "license": "ISC" - }, - "node_modules/config-file-ts/node_modules/minimatch": { - "version": "9.0.5", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", - "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", - "dev": true, - "license": "ISC", - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/config-file-ts/node_modules/path-scurry": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz", - "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==", - "dev": true, - "license": "BlueOak-1.0.0", - "dependencies": { - "lru-cache": "^10.2.0", - "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" - }, - "engines": { - "node": ">=16 || 14 >=14.18" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, "node_modules/connect-history-api-fallback": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-2.0.0.tgz", @@ -9280,13 +8600,13 @@ } }, "node_modules/core-js-compat": { - "version": "3.42.0", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.42.0.tgz", - "integrity": "sha512-bQasjMfyDGyaeWKBIu33lHh9qlSR0MFE/Nmc6nMjf/iU9b3rSMdAYz1Baxrv4lPdGUsTqZudHA4jIGSJy0SWZQ==", + "version": "3.43.0", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.43.0.tgz", + "integrity": "sha512-2GML2ZsCc5LR7hZYz4AXmjQw8zuy2T//2QntwdnpuYI7jteT6GVYJL7F6C2C57R7gSYrcqVW3lAALefdbhBLDA==", "dev": true, "license": "MIT", "dependencies": { - "browserslist": "^4.24.4" + "browserslist": "^4.25.0" }, "funding": { "type": "opencollective", @@ -9362,37 +8682,6 @@ "ieee754": "^1.1.13" } }, - "node_modules/create-jest": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/create-jest/-/create-jest-29.7.0.tgz", - "integrity": "sha512-Adz2bdH0Vq3F53KEMJOoftQFutWCukm6J24wbPWRO4k1kMY7gS7ds/uoJkNuV8wDCtWWnuwGcJwpWcih+zEW1Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/types": "^29.6.3", - "chalk": "^4.0.0", - "exit": "^0.1.2", - "graceful-fs": "^4.2.9", - "jest-config": "^29.7.0", - "jest-util": "^29.7.0", - "prompts": "^2.0.1" - }, - "bin": { - "create-jest": "bin/create-jest.js" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/cross-dirname": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/cross-dirname/-/cross-dirname-0.1.0.tgz", - "integrity": "sha512-+R08/oI0nl3vfPcqftZRpytksBXDzOUveBq/NBVx0sUp1axwzPQrKinNx5yd5sxPu8j1wIy8AfnVQ+5eFdha6Q==", - "dev": true, - "license": "MIT", - "optional": true, - "peer": true - }, "node_modules/cross-env": { "version": "7.0.3", "resolved": "https://registry.npmjs.org/cross-env/-/cross-env-7.0.3.tgz", @@ -9560,33 +8849,20 @@ "node": ">=4" } }, - "node_modules/cssom": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.5.0.tgz", - "integrity": "sha512-iKuQcq+NdHqlAcwUY0o/HL69XQrUaQdMjmStJ8JFmUaiiQErlhrmuigkg/CU4E2J0IyUKUrMAgl36TvN67MqTw==", - "dev": true, - "license": "MIT" - }, "node_modules/cssstyle": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-2.3.0.tgz", - "integrity": "sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A==", + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-4.4.0.tgz", + "integrity": "sha512-W0Y2HOXlPkb2yaKrCVRjinYKciu/qSLEmK0K9mcfDei3zwlnHFEHAs/Du3cIRwPqY+J4JsiBzUjoHyc8RsJ03A==", "dev": true, "license": "MIT", "dependencies": { - "cssom": "~0.3.6" + "@asamuzakjp/css-color": "^3.2.0", + "rrweb-cssom": "^0.8.0" }, "engines": { - "node": ">=8" + "node": ">=18" } }, - "node_modules/cssstyle/node_modules/cssom": { - "version": "0.3.8", - "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.8.tgz", - "integrity": "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==", - "dev": true, - "license": "MIT" - }, "node_modules/csstype": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz", @@ -9609,18 +8885,17 @@ "license": "BSD-2-Clause" }, "node_modules/data-urls": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-3.0.2.tgz", - "integrity": "sha512-Jy/tj3ldjZJo63sVAvg6LHt2mHvl4V6AgRAmNDtLdm7faqtsx+aJG42rsyCo9JCoRVKwPFzKlIPx3DIibwSIaQ==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-5.0.0.tgz", + "integrity": "sha512-ZYP5VBHshaDAiVZxjbRVcFJpc+4xGgT0bK3vzy1HLN8jTO975HEbuYzZJcHoQEY5K1a0z8YayJkyVETa08eNTg==", "dev": true, "license": "MIT", "dependencies": { - "abab": "^2.0.6", - "whatwg-mimetype": "^3.0.0", - "whatwg-url": "^11.0.0" + "whatwg-mimetype": "^4.0.0", + "whatwg-url": "^14.0.0" }, "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/data-view-buffer": { @@ -9701,35 +8976,6 @@ "dev": true, "license": "MIT" }, - "node_modules/decompress-response": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz", - "integrity": "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "mimic-response": "^3.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/decompress-response/node_modules/mimic-response": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz", - "integrity": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/dedent": { "version": "1.6.0", "resolved": "https://registry.npmjs.org/dedent/-/dedent-1.6.0.tgz", @@ -9802,29 +9048,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/defaults": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.4.tgz", - "integrity": "sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==", - "dev": true, - "license": "MIT", - "dependencies": { - "clone": "^1.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/defer-to-connect": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-2.0.1.tgz", - "integrity": "sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - } - }, "node_modules/define-data-property": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", @@ -9871,16 +9094,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/delayed-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.4.0" - } - }, "node_modules/delegates": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", @@ -9919,13 +9132,17 @@ } }, "node_modules/detect-libc": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.4.tgz", - "integrity": "sha512-3UDv+G9CsCKO1WKMGw9fwq/SWJYbI0c5Y7LU1AXYoDdbhE2AHQ6N6Nb34sG8Fj7T5APy8qXDCKuuIHd1BR0tVA==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz", + "integrity": "sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg==", "dev": true, "license": "Apache-2.0", + "optional": true, + "bin": { + "detect-libc": "bin/detect-libc.js" + }, "engines": { - "node": ">=8" + "node": ">=0.10" } }, "node_modules/detect-newline": { @@ -9958,51 +9175,6 @@ "url": "https://github.com/sponsors/wooorm" } }, - "node_modules/diff-sequences": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-29.6.3.tgz", - "integrity": "sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/dir-compare": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/dir-compare/-/dir-compare-4.2.0.tgz", - "integrity": "sha512-2xMCmOoMrdQIPHdsTawECdNPwlVFB9zGcz3kuhmBO6U3oU+UQjsue0i8ayLKpgBcm+hcXPMVSGUN9d+pvJ6+VQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "minimatch": "^3.0.5", - "p-limit": "^3.1.0 " - } - }, - "node_modules/dir-compare/node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/dir-compare/node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dev": true, - "license": "ISC", - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, "node_modules/dir-glob": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", @@ -10016,62 +9188,6 @@ "node": ">=8" } }, - "node_modules/dmg-builder": { - "version": "26.0.12", - "resolved": "https://registry.npmjs.org/dmg-builder/-/dmg-builder-26.0.12.tgz", - "integrity": "sha512-59CAAjAhTaIMCN8y9kD573vDkxbs1uhDcrFLHSgutYdPcGOU35Rf95725snvzEOy4BFB7+eLJ8djCNPmGwG67w==", - "dev": true, - "license": "MIT", - "dependencies": { - "app-builder-lib": "26.0.12", - "builder-util": "26.0.11", - "builder-util-runtime": "9.3.1", - "fs-extra": "^10.1.0", - "iconv-lite": "^0.6.2", - "js-yaml": "^4.1.0" - }, - "optionalDependencies": { - "dmg-license": "^1.0.11" - } - }, - "node_modules/dmg-builder/node_modules/fs-extra": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", - "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/dmg-builder/node_modules/jsonfile": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", - "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "universalify": "^2.0.0" - }, - "optionalDependencies": { - "graceful-fs": "^4.1.6" - } - }, - "node_modules/dmg-builder/node_modules/universalify": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", - "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 10.0.0" - } - }, "node_modules/dmg-license": { "version": "1.0.11", "resolved": "https://registry.npmjs.org/dmg-license/-/dmg-license-1.0.11.tgz", @@ -10179,20 +9295,6 @@ ], "license": "BSD-2-Clause" }, - "node_modules/domexception": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/domexception/-/domexception-4.0.0.tgz", - "integrity": "sha512-A2is4PLG+eeSfoTMA95/s4pvAoSo2mKtiM5jlHkAVewmiO8ISFTFKZjH7UAM1Atli/OT/7JHOrJRJiMKUZKYBw==", - "deprecated": "Use your platform's native DOMException instead", - "dev": true, - "license": "MIT", - "dependencies": { - "webidl-conversions": "^7.0.0" - }, - "engines": { - "node": ">=12" - } - }, "node_modules/domhandler": { "version": "4.3.1", "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz", @@ -10248,22 +9350,6 @@ "url": "https://dotenvx.com" } }, - "node_modules/dotenv-expand": { - "version": "11.0.7", - "resolved": "https://registry.npmjs.org/dotenv-expand/-/dotenv-expand-11.0.7.tgz", - "integrity": "sha512-zIHwmZPRshsCdpMDyVsqGmgyP0yT8GAgXUnkdAoJisxvf33k7yO6OuoKmcTGuXPWSsm8Oh88nZicRLA9Y0rUeA==", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "dotenv": "^16.4.5" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://dotenvx.com" - } - }, "node_modules/dunder-proto": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz", @@ -10300,417 +9386,13 @@ "dev": true, "license": "MIT" }, - "node_modules/ejs": { - "version": "3.1.10", - "resolved": "https://registry.npmjs.org/ejs/-/ejs-3.1.10.tgz", - "integrity": "sha512-UeJmFfOrAQS8OJWPZ4qtgHyWExa088/MtK5UEyoJGFH67cDEXkZSviOiKRCZ4Xij0zxI3JECgYs3oKx+AizQBA==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "jake": "^10.8.5" - }, - "bin": { - "ejs": "bin/cli.js" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/electron": { - "version": "36.3.2", - "resolved": "https://registry.npmjs.org/electron/-/electron-36.3.2.tgz", - "integrity": "sha512-v0/j7n22CL3OYv9BIhq6JJz2+e1HmY9H4bjTk8/WzVT9JwVX/T/21YNdR7xuQ6XDSEo9gP5JnqmjOamE+CUY8Q==", - "dev": true, - "hasInstallScript": true, - "license": "MIT", - "dependencies": { - "@electron/get": "^2.0.0", - "@types/node": "^22.7.7", - "extract-zip": "^2.0.1" - }, - "bin": { - "electron": "cli.js" - }, - "engines": { - "node": ">= 12.20.55" - } - }, - "node_modules/electron-builder": { - "version": "26.0.12", - "resolved": "https://registry.npmjs.org/electron-builder/-/electron-builder-26.0.12.tgz", - "integrity": "sha512-cD1kz5g2sgPTMFHjLxfMjUK5JABq3//J4jPswi93tOPFz6btzXYtK5NrDt717NRbukCUDOrrvmYVOWERlqoiXA==", - "dev": true, - "license": "MIT", - "dependencies": { - "app-builder-lib": "26.0.12", - "builder-util": "26.0.11", - "builder-util-runtime": "9.3.1", - "chalk": "^4.1.2", - "dmg-builder": "26.0.12", - "fs-extra": "^10.1.0", - "is-ci": "^3.0.0", - "lazy-val": "^1.0.5", - "simple-update-notifier": "2.0.0", - "yargs": "^17.6.2" - }, - "bin": { - "electron-builder": "cli.js", - "install-app-deps": "install-app-deps.js" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/electron-builder-squirrel-windows": { - "version": "26.0.12", - "resolved": "https://registry.npmjs.org/electron-builder-squirrel-windows/-/electron-builder-squirrel-windows-26.0.12.tgz", - "integrity": "sha512-kpwXM7c/ayRUbYVErQbsZ0nQZX4aLHQrPEG9C4h9vuJCXylwFH8a7Jgi2VpKIObzCXO7LKHiCw4KdioFLFOgqA==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "app-builder-lib": "26.0.12", - "builder-util": "26.0.11", - "electron-winstaller": "5.4.0" - } - }, - "node_modules/electron-builder/node_modules/fs-extra": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", - "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/electron-builder/node_modules/jsonfile": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", - "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "universalify": "^2.0.0" - }, - "optionalDependencies": { - "graceful-fs": "^4.1.6" - } - }, - "node_modules/electron-builder/node_modules/universalify": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", - "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 10.0.0" - } - }, - "node_modules/electron-conf": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/electron-conf/-/electron-conf-1.3.0.tgz", - "integrity": "sha512-F1F33QntbFiRsmCW4r8n+CqfTmBzw9XhCWVh27weFpfCNATo9n0K1h1UQLEG5kYBZRqMfcWr1+IHSO+Yd7seRQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "ajv": "^8.13.0" - }, - "peerDependencies": { - "electron": ">=15.0.0" - } - }, - "node_modules/electron-conf/node_modules/ajv": { - "version": "8.17.1", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz", - "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==", - "dev": true, - "license": "MIT", - "dependencies": { - "fast-deep-equal": "^3.1.3", - "fast-uri": "^3.0.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/electron-conf/node_modules/json-schema-traverse": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", - "dev": true, - "license": "MIT" - }, - "node_modules/electron-context-menu": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/electron-context-menu/-/electron-context-menu-4.1.0.tgz", - "integrity": "sha512-mvV7YAIaAvMdxqkdDDHXehe5FPyFKXOyuJqgLwXSrWRjdmDBZQREvgcphKbAVgFU5XjYG5R6PAL00+b8Q6SKqg==", - "dev": true, - "license": "MIT", - "dependencies": { - "cli-truncate": "^4.0.0", - "electron-dl": "^4.0.0", - "electron-is-dev": "^3.0.1" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/electron-dl": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/electron-dl/-/electron-dl-4.0.0.tgz", - "integrity": "sha512-USiB9816d2JzKv0LiSbreRfTg5lDk3lWh0vlx/gugCO92ZIJkHVH0UM18EHvKeadErP6Xn4yiTphWzYfbA2Ong==", - "dev": true, - "license": "MIT", - "dependencies": { - "ext-name": "^5.0.0", - "pupa": "^3.1.0", - "unused-filename": "^4.0.1" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/electron-drag-click": { - "version": "1.0.7", - "resolved": "git+ssh://git@github.com/zubiden/electron-drag-click.git#cf6918ddb648e13ebcf6cf1e7aa008258edc06ad", - "integrity": "sha512-iaW1+0hp+Yh7Y36oW6mBgIB5yBRvD4ubMWiasF0TsIs8rrF2MJyMn6isW6v1EiU3vE+lw860XSmLkksLu6FA6g==", - "dev": true, - "hasInstallScript": true, - "license": "MIT", - "dependencies": { - "bindings": "^1.5.0", - "node-addon-api": "^8.3.1" - } - }, - "node_modules/electron-is-dev": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/electron-is-dev/-/electron-is-dev-3.0.1.tgz", - "integrity": "sha512-8TjjAh8Ec51hUi3o4TaU0mD3GMTOESi866oRNavj9A3IQJ7pmv+MJVmdZBFGw4GFT36X7bkqnuDNYvkQgvyI8Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/electron-publish": { - "version": "26.0.11", - "resolved": "https://registry.npmjs.org/electron-publish/-/electron-publish-26.0.11.tgz", - "integrity": "sha512-a8QRH0rAPIWH9WyyS5LbNvW9Ark6qe63/LqDB7vu2JXYpi0Gma5Q60Dh4tmTqhOBQt0xsrzD8qE7C+D7j+B24A==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/fs-extra": "^9.0.11", - "builder-util": "26.0.11", - "builder-util-runtime": "9.3.1", - "chalk": "^4.1.2", - "form-data": "^4.0.0", - "fs-extra": "^10.1.0", - "lazy-val": "^1.0.5", - "mime": "^2.5.2" - } - }, - "node_modules/electron-publish/node_modules/fs-extra": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", - "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/electron-publish/node_modules/jsonfile": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", - "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "universalify": "^2.0.0" - }, - "optionalDependencies": { - "graceful-fs": "^4.1.6" - } - }, - "node_modules/electron-publish/node_modules/universalify": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", - "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 10.0.0" - } - }, "node_modules/electron-to-chromium": { - "version": "1.5.162", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.162.tgz", - "integrity": "sha512-hQA+Zb5QQwoSaXJWEAGEw1zhk//O7qDzib05Z4qTqZfNju/FAkrm5ZInp0JbTp4Z18A6bilopdZWEYrFSsfllA==", + "version": "1.5.169", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.169.tgz", + "integrity": "sha512-q7SQx6mkLy0GTJK9K9OiWeaBMV4XQtBSdf6MJUzDB/H/5tFXfIiX38Lci1Kl6SsgiEhz1SQI1ejEOU5asWEhwQ==", "dev": true, "license": "ISC" }, - "node_modules/electron-updater": { - "version": "6.6.2", - "resolved": "https://registry.npmjs.org/electron-updater/-/electron-updater-6.6.2.tgz", - "integrity": "sha512-Cr4GDOkbAUqRHP5/oeOmH/L2Bn6+FQPxVLZtPbcmKZC63a1F3uu5EefYOssgZXG3u/zBlubbJ5PJdITdMVggbw==", - "dev": true, - "license": "MIT", - "dependencies": { - "builder-util-runtime": "9.3.1", - "fs-extra": "^10.1.0", - "js-yaml": "^4.1.0", - "lazy-val": "^1.0.5", - "lodash.escaperegexp": "^4.1.2", - "lodash.isequal": "^4.5.0", - "semver": "^7.6.3", - "tiny-typed-emitter": "^2.1.0" - } - }, - "node_modules/electron-updater/node_modules/fs-extra": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", - "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/electron-updater/node_modules/jsonfile": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", - "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "universalify": "^2.0.0" - }, - "optionalDependencies": { - "graceful-fs": "^4.1.6" - } - }, - "node_modules/electron-updater/node_modules/semver": { - "version": "7.7.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz", - "integrity": "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==", - "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/electron-updater/node_modules/universalify": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", - "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 10.0.0" - } - }, - "node_modules/electron-winstaller": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/electron-winstaller/-/electron-winstaller-5.4.0.tgz", - "integrity": "sha512-bO3y10YikuUwUuDUQRM4KfwNkKhnpVO7IPdbsrejwN9/AABJzzTQ4GeHwyzNSrVO+tEH3/Np255a3sVZpZDjvg==", - "dev": true, - "hasInstallScript": true, - "license": "MIT", - "peer": true, - "dependencies": { - "@electron/asar": "^3.2.1", - "debug": "^4.1.1", - "fs-extra": "^7.0.1", - "lodash": "^4.17.21", - "temp": "^0.9.0" - }, - "engines": { - "node": ">=8.0.0" - }, - "optionalDependencies": { - "@electron/windows-sign": "^1.1.2" - } - }, - "node_modules/electron-winstaller/node_modules/fs-extra": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-7.0.1.tgz", - "integrity": "sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "graceful-fs": "^4.1.2", - "jsonfile": "^4.0.0", - "universalify": "^0.1.0" - }, - "engines": { - "node": ">=6 <7 || >=8" - } - }, - "node_modules/electronmon": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/electronmon/-/electronmon-2.0.3.tgz", - "integrity": "sha512-vpsNupi9sCzOCvx8GACbSHKEImkNF2a6pU5Io2yabARbJeQ/8ZuY7t/43LilF6Qw0nZ0MbKQt4sO3x0F3drpQQ==", - "dev": true, - "license": "ISC", - "dependencies": { - "chalk": "^3.0.0", - "import-from": "^3.0.0", - "runtime-required": "^1.1.0", - "watchboy": "^0.4.3" - }, - "bin": { - "electronmon": "bin/cli.js" - }, - "engines": { - "node": ">=10.0.0" - } - }, - "node_modules/electronmon/node_modules/chalk": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", - "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/emittery": { "version": "0.13.1", "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.13.1.tgz", @@ -10758,16 +9440,6 @@ "iconv-lite": "^0.6.2" } }, - "node_modules/end-of-stream": { - "version": "1.4.4", - "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", - "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "once": "^1.4.0" - } - }, "node_modules/enhanced-resolve": { "version": "5.18.1", "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.18.1.tgz", @@ -10783,9 +9455,9 @@ } }, "node_modules/entities": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-6.0.0.tgz", - "integrity": "sha512-aKstq2TDOndCn4diEyp9Uq/Flu2i1GlLkc6XIDQSDMuaFE3OPW5OphLCyQ5SpSJZTb4reN+kTcYru5yIfXoRPw==", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/entities/-/entities-6.0.1.tgz", + "integrity": "sha512-aN97NXWF6AWBTahfVOIrB/NShkzi5H7F9r1s9mD3cDj4Ko5f2qhhVoYMibXF7GlLveb/D2ioWay8lxI97Ven3g==", "dev": true, "license": "BSD-2-Clause", "engines": { @@ -11033,14 +9705,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/es6-error": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/es6-error/-/es6-error-4.1.1.tgz", - "integrity": "sha512-Um/+FxMr9CISWh0bi5Zv0iOD+4cFh5qLeks1qhAopKVAJw3drgKbKySikp7wGhDL0HPeaja0P5ULZrxLkniUVg==", - "dev": true, - "license": "MIT", - "optional": true - }, "node_modules/esbuild": { "version": "0.25.5", "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.5.tgz", @@ -11092,19 +9756,6 @@ "node": ">=6" } }, - "node_modules/escape-goat": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/escape-goat/-/escape-goat-4.0.0.tgz", - "integrity": "sha512-2Sd4ShcWxbx6OY1IHyla/CVNwvg7XwZVoXZHcSu9w9SReNP1EzzD5T8NWKIR38fIqEns9kDWKUQTXXAmlDrdPg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/escape-html": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", @@ -11125,42 +9776,20 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/escodegen": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-2.1.0.tgz", - "integrity": "sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w==", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "esprima": "^4.0.1", - "estraverse": "^5.2.0", - "esutils": "^2.0.2" - }, - "bin": { - "escodegen": "bin/escodegen.js", - "esgenerate": "bin/esgenerate.js" - }, - "engines": { - "node": ">=6.0" - }, - "optionalDependencies": { - "source-map": "~0.6.1" - } - }, "node_modules/eslint": { - "version": "9.28.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.28.0.tgz", - "integrity": "sha512-ocgh41VhRlf9+fVpe7QKzwLj9c92fDiqOj8Y3Sd4/ZmVA4Btx4PlUYPq4pp9JDyupkf1upbEXecxL2mwNV7jPQ==", + "version": "9.29.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.29.0.tgz", + "integrity": "sha512-GsGizj2Y1rCWDu6XoEekL3RLilp0voSePurjZIkxL3wlm5o5EC9VpgaP7lrCvjnkuLvzFBQWB3vWB3K5KQTveQ==", "dev": true, "license": "MIT", "dependencies": { "@eslint-community/eslint-utils": "^4.2.0", "@eslint-community/regexpp": "^4.12.1", - "@eslint/config-array": "^0.20.0", + "@eslint/config-array": "^0.20.1", "@eslint/config-helpers": "^0.2.1", "@eslint/core": "^0.14.0", "@eslint/eslintrc": "^3.3.1", - "@eslint/js": "9.28.0", + "@eslint/js": "9.29.0", "@eslint/plugin-kit": "^0.3.1", "@humanfs/node": "^0.16.6", "@humanwhocodes/module-importer": "^1.0.1", @@ -11172,9 +9801,9 @@ "cross-spawn": "^7.0.6", "debug": "^4.3.2", "escape-string-regexp": "^4.0.0", - "eslint-scope": "^8.3.0", - "eslint-visitor-keys": "^4.2.0", - "espree": "^10.3.0", + "eslint-scope": "^8.4.0", + "eslint-visitor-keys": "^4.2.1", + "espree": "^10.4.0", "esquery": "^1.5.0", "esutils": "^2.0.2", "fast-deep-equal": "^3.1.3", @@ -11292,17 +9921,6 @@ "eslint": "^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 || ^9" } }, - "node_modules/eslint-plugin-import/node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, "node_modules/eslint-plugin-import/node_modules/debug": { "version": "3.2.7", "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", @@ -11327,9 +9945,9 @@ } }, "node_modules/eslint-plugin-jest": { - "version": "28.12.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-jest/-/eslint-plugin-jest-28.12.0.tgz", - "integrity": "sha512-J6zmDp8WiQ9tyvYXE+3RFy7/+l4hraWLzmsabYXyehkmmDd36qV4VQFc7XzcsD8C1PTNt646MSx25bO1mdd9Yw==", + "version": "28.14.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-jest/-/eslint-plugin-jest-28.14.0.tgz", + "integrity": "sha512-P9s/qXSMTpRTerE2FQ0qJet2gKbcGyFTPAJipoKxmWqR6uuFqIqk8FuEfg5yBieOezVrEfAMZrEwJ6yEp+1MFQ==", "dev": true, "license": "MIT", "dependencies": { @@ -11382,17 +10000,6 @@ "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9" } }, - "node_modules/eslint-plugin-jsx-a11y/node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, "node_modules/eslint-plugin-jsx-a11y/node_modules/minimatch": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", @@ -11460,22 +10067,22 @@ "license": "MIT" }, "node_modules/eslint-plugin-react-x": { - "version": "1.51.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-react-x/-/eslint-plugin-react-x-1.51.0.tgz", - "integrity": "sha512-zOhqYm43TULoP7jeupDCBtAuT6JUe22khce3dlmOxNUoA+fx7isyHokx2VPc3ZLCdMCGBXH8iwCwpSoJXGxrsg==", + "version": "1.52.2", + "resolved": "https://registry.npmjs.org/eslint-plugin-react-x/-/eslint-plugin-react-x-1.52.2.tgz", + "integrity": "sha512-Pxpf3YxCUcNgzJVT6blAJ2KvLX32pUxtXndaCZoTdiytFw/H9OZKq4Qczxx/Lpo9Ri5rm4FbIZL3BfL/HGmzBw==", "dev": true, "license": "MIT", "dependencies": { - "@eslint-react/ast": "1.51.0", - "@eslint-react/core": "1.51.0", - "@eslint-react/eff": "1.51.0", - "@eslint-react/kit": "1.51.0", - "@eslint-react/shared": "1.51.0", - "@eslint-react/var": "1.51.0", - "@typescript-eslint/scope-manager": "^8.33.1", - "@typescript-eslint/type-utils": "^8.33.1", - "@typescript-eslint/types": "^8.33.1", - "@typescript-eslint/utils": "^8.33.1", + "@eslint-react/ast": "1.52.2", + "@eslint-react/core": "1.52.2", + "@eslint-react/eff": "1.52.2", + "@eslint-react/kit": "1.52.2", + "@eslint-react/shared": "1.52.2", + "@eslint-react/var": "1.52.2", + "@typescript-eslint/scope-manager": "^8.34.0", + "@typescript-eslint/type-utils": "^8.34.0", + "@typescript-eslint/types": "^8.34.0", + "@typescript-eslint/utils": "^8.34.0", "compare-versions": "^6.1.1", "is-immutable-type": "^5.0.1", "string-ts": "^2.2.1", @@ -11502,17 +10109,6 @@ } } }, - "node_modules/eslint-plugin-react/node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, "node_modules/eslint-plugin-react/node_modules/minimatch": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", @@ -11587,9 +10183,9 @@ } }, "node_modules/eslint-scope": { - "version": "8.3.0", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-8.3.0.tgz", - "integrity": "sha512-pUNxi75F8MJ/GdeKtVLSbYg4ZI34J6C0C7sbL4YOp2exGwen7ZsuBqKzUhXd0qMQ362yET3z+uPwKeg/0C2XCQ==", + "version": "8.4.0", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-8.4.0.tgz", + "integrity": "sha512-sNXOfKCn74rt8RICKMvJS7XKV/Xk9kA7DyJr8mJik3S7Cwgy3qlkkmyS2uQB3jiJg6VNdZd/pDBJu0nvG2NlTg==", "dev": true, "license": "BSD-2-Clause", "dependencies": { @@ -11604,9 +10200,9 @@ } }, "node_modules/eslint-visitor-keys": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.0.tgz", - "integrity": "sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw==", + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.1.tgz", + "integrity": "sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==", "dev": true, "license": "Apache-2.0", "engines": { @@ -11616,17 +10212,6 @@ "url": "https://opencollective.com/eslint" } }, - "node_modules/eslint/node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, "node_modules/eslint/node_modules/ignore": { "version": "5.3.2", "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", @@ -11651,15 +10236,15 @@ } }, "node_modules/espree": { - "version": "10.3.0", - "resolved": "https://registry.npmjs.org/espree/-/espree-10.3.0.tgz", - "integrity": "sha512-0QYC8b24HWY8zjRnDTL6RiHfDbAWn63qb4LMj1Z4b076A4une81+z03Kg7l7mn/48PUTqoLptSXez8oknU8Clg==", + "version": "10.4.0", + "resolved": "https://registry.npmjs.org/espree/-/espree-10.4.0.tgz", + "integrity": "sha512-j6PAQ2uUr79PZhBjP5C5fhl8e39FmRnOjsD5lGnWrFU8i2G776tBK7+nP8KuQUTTyAZUwfQqXAgrVH5MbH9CYQ==", "dev": true, "license": "BSD-2-Clause", "dependencies": { - "acorn": "^8.14.0", + "acorn": "^8.15.0", "acorn-jsx": "^5.3.2", - "eslint-visitor-keys": "^4.2.0" + "eslint-visitor-keys": "^4.2.1" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -11779,19 +10364,6 @@ "url": "https://github.com/sindresorhus/execa?sponsor=1" } }, - "node_modules/execa/node_modules/get-stream": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", - "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/execa/node_modules/signal-exit": { "version": "3.0.7", "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", @@ -11799,30 +10371,32 @@ "dev": true, "license": "ISC" }, - "node_modules/exit": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", - "integrity": "sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==", + "node_modules/exit-x": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/exit-x/-/exit-x-0.2.2.tgz", + "integrity": "sha512-+I6B/IkJc1o/2tiURyz/ivu/O0nKNEArIUB5O7zBrlDVJr22SCLH3xTeEry428LvFhRzIA1g8izguxJ/gbNcVQ==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.8.0" } }, "node_modules/expect": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/expect/-/expect-29.7.0.tgz", - "integrity": "sha512-2Zks0hf1VLFYI1kbh0I5jP3KHHyCHpkfyHBzsSXRFgl/Bg9mWYfMW8oD+PdMPlEwy5HNsR9JutYy6pMeOh61nw==", + "version": "30.0.0", + "resolved": "https://registry.npmjs.org/expect/-/expect-30.0.0.tgz", + "integrity": "sha512-xCdPp6gwiR9q9lsPCHANarIkFTN/IMZso6Kkq03sOm9IIGtzK/UJqml0dkhHibGh8HKOj8BIDIpZ0BZuU7QK6w==", "dev": true, "license": "MIT", "dependencies": { - "@jest/expect-utils": "^29.7.0", - "jest-get-type": "^29.6.3", - "jest-matcher-utils": "^29.7.0", - "jest-message-util": "^29.7.0", - "jest-util": "^29.7.0" + "@jest/expect-utils": "30.0.0", + "@jest/get-type": "30.0.0", + "jest-matcher-utils": "30.0.0", + "jest-message-util": "30.0.0", + "jest-mock": "30.0.0", + "jest-util": "30.0.0" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, "node_modules/exponential-backoff": { @@ -11926,54 +10500,6 @@ "node": ">= 0.6" } }, - "node_modules/ext-list": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/ext-list/-/ext-list-2.2.2.tgz", - "integrity": "sha512-u+SQgsubraE6zItfVA0tBuCBhfU9ogSRnsvygI7wht9TS510oLkBRXBsqopeUG/GBOIQyKZO9wjTqIu/sf5zFA==", - "dev": true, - "license": "MIT", - "dependencies": { - "mime-db": "^1.28.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/ext-name": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/ext-name/-/ext-name-5.0.0.tgz", - "integrity": "sha512-yblEwXAbGv1VQDmow7s38W77hzAgJAO50ztBLMcUyUBfxv1HC+LGwtiEN+Co6LtlqT/5uwVOxsD4TNIilWhwdQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "ext-list": "^2.0.0", - "sort-keys-length": "^1.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/extract-zip": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-2.0.1.tgz", - "integrity": "sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg==", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "debug": "^4.1.1", - "get-stream": "^5.1.0", - "yauzl": "^2.10.0" - }, - "bin": { - "extract-zip": "cli.js" - }, - "engines": { - "node": ">= 10.17.0" - }, - "optionalDependencies": { - "@types/yauzl": "^2.9.1" - } - }, "node_modules/extsprintf": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.4.1.tgz", @@ -12105,20 +10631,10 @@ "bser": "2.1.1" } }, - "node_modules/fd-slicer": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz", - "integrity": "sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==", - "dev": true, - "license": "MIT", - "dependencies": { - "pend": "~1.2.0" - } - }, "node_modules/fdir": { - "version": "6.4.5", - "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.4.5.tgz", - "integrity": "sha512-4BG7puHpVsIYxZUbiUE3RqGloLaSSwzYie5jvasC4LWuBWzZawynvYouhjbQKw2JuIGYdm0DzIxl8iVidKlUEw==", + "version": "6.4.6", + "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.4.6.tgz", + "integrity": "sha512-hiFoqpyZcfNm1yc4u8oWCf9A2c4D3QjCrks3zmoVKVxpQRzmPNar1hUJcBG2RQHvEVGDN+Jm81ZheVLAQMK6+w==", "dev": true, "license": "MIT", "peerDependencies": { @@ -12176,18 +10692,18 @@ } }, "node_modules/file-type": { - "version": "20.5.0", - "resolved": "https://registry.npmjs.org/file-type/-/file-type-20.5.0.tgz", - "integrity": "sha512-BfHZtG/l9iMm4Ecianu7P8HRD2tBHLtjXinm4X62XBOYzi7CYA7jyqfJzOvXHqzVrVPYqBo2/GvbARMaaJkKVg==", + "version": "21.0.0", + "resolved": "https://registry.npmjs.org/file-type/-/file-type-21.0.0.tgz", + "integrity": "sha512-ek5xNX2YBYlXhiUXui3D/BXa3LdqPmoLJ7rqEx2bKJ7EAUEfmXgW0Das7Dc6Nr9MvqaOnIqiPV0mZk/r/UpNAg==", "license": "MIT", "dependencies": { - "@tokenizer/inflate": "^0.2.6", - "strtok3": "^10.2.0", + "@tokenizer/inflate": "^0.2.7", + "strtok3": "^10.2.2", "token-types": "^6.0.0", "uint8array-extras": "^1.4.0" }, "engines": { - "node": ">=18" + "node": ">=20" }, "funding": { "url": "https://github.com/sindresorhus/file-type?sponsor=1" @@ -12200,29 +10716,6 @@ "dev": true, "license": "MIT" }, - "node_modules/filelist": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/filelist/-/filelist-1.0.4.tgz", - "integrity": "sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "minimatch": "^5.0.1" - } - }, - "node_modules/filelist/node_modules/minimatch": { - "version": "5.1.6", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", - "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", - "dev": true, - "license": "ISC", - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/fill-range": { "version": "7.1.1", "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", @@ -12390,22 +10883,6 @@ "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/form-data": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.2.tgz", - "integrity": "sha512-hGfm/slu0ZabnNt4oaRZ6uREyfCj6P4fT/n6A1rGV+Z0VdGXjfOhVUpkn6qVQONHGIFwmveGXyDs75+nr6FM8w==", - "dev": true, - "license": "MIT", - "dependencies": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.8", - "es-set-tostringtag": "^2.1.0", - "mime-types": "^2.1.12" - }, - "engines": { - "node": ">= 6" - } - }, "node_modules/forwarded": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", @@ -12440,21 +10917,6 @@ "node": ">= 0.6" } }, - "node_modules/fs-extra": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", - "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", - "dev": true, - "license": "MIT", - "dependencies": { - "graceful-fs": "^4.2.0", - "jsonfile": "^4.0.0", - "universalify": "^0.1.0" - }, - "engines": { - "node": ">=6 <7 || >=8" - } - }, "node_modules/fs-minipass": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", @@ -12581,23 +11043,6 @@ "node": ">=8" } }, - "node_modules/gauge/node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true, - "license": "MIT" - }, - "node_modules/gauge/node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, "node_modules/gauge/node_modules/signal-exit": { "version": "3.0.7", "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", @@ -12605,21 +11050,6 @@ "dev": true, "license": "ISC" }, - "node_modules/gauge/node_modules/string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, - "license": "MIT", - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/gauge/node_modules/strip-ansi": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", @@ -12726,16 +11156,13 @@ } }, "node_modules/get-stream": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", - "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", "dev": true, "license": "MIT", - "dependencies": { - "pump": "^3.0.0" - }, "engines": { - "node": ">=8" + "node": ">=10" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" @@ -12799,15 +11226,15 @@ } }, "node_modules/glob": { - "version": "11.0.2", - "resolved": "https://registry.npmjs.org/glob/-/glob-11.0.2.tgz", - "integrity": "sha512-YT7U7Vye+t5fZ/QMkBFrTJ7ZQxInIUjwyAjVj84CYXqgBdv30MFUPGnBR6sQaVq6Is15wYJUsnzTuWaGRBhBAQ==", + "version": "11.0.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-11.0.3.tgz", + "integrity": "sha512-2Nim7dha1KVkaiF4q6Dj+ngPPMdfvLJEOpZk/jKiUAkqKebpGAWQXAq9z1xu9HKu5lWfqw/FASuccEjyznjPaA==", "dev": true, "license": "ISC", "dependencies": { - "foreground-child": "^3.1.0", - "jackspeak": "^4.0.1", - "minimatch": "^10.0.0", + "foreground-child": "^3.3.1", + "jackspeak": "^4.1.1", + "minimatch": "^10.0.3", "minipass": "^7.1.2", "package-json-from-dist": "^1.0.0", "path-scurry": "^2.0.0" @@ -12842,39 +11269,6 @@ "dev": true, "license": "BSD-2-Clause" }, - "node_modules/global-agent": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/global-agent/-/global-agent-3.0.0.tgz", - "integrity": "sha512-PT6XReJ+D07JvGoxQMkT6qji/jVNfX/h364XHZOWeRzy64sSFr+xJ5OX7LI3b4MPQzdL4H8Y8M0xzPpsVMwA8Q==", - "dev": true, - "license": "BSD-3-Clause", - "optional": true, - "dependencies": { - "boolean": "^3.0.1", - "es6-error": "^4.1.1", - "matcher": "^3.0.0", - "roarr": "^2.15.3", - "semver": "^7.3.2", - "serialize-error": "^7.0.1" - }, - "engines": { - "node": ">=10.0" - } - }, - "node_modules/global-agent/node_modules/semver": { - "version": "7.7.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz", - "integrity": "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==", - "dev": true, - "license": "ISC", - "optional": true, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/global-modules": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-2.0.0.tgz", @@ -12994,32 +11388,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/got": { - "version": "11.8.6", - "resolved": "https://registry.npmjs.org/got/-/got-11.8.6.tgz", - "integrity": "sha512-6tfZ91bOr7bOXnK7PRDCGBLa1H4U080YHNaAQ2KsMGlLEzRbk44nsZF2E1IeRc3vtJHPVbKCYgdFbaGO2ljd8g==", - "dev": true, - "license": "MIT", - "dependencies": { - "@sindresorhus/is": "^4.0.0", - "@szmarczak/http-timer": "^4.0.5", - "@types/cacheable-request": "^6.0.1", - "@types/responselike": "^1.0.0", - "cacheable-lookup": "^5.0.3", - "cacheable-request": "^7.0.2", - "decompress-response": "^6.0.0", - "http2-wrapper": "^1.0.0-beta.5.2", - "lowercase-keys": "^2.0.0", - "p-cancelable": "^2.0.0", - "responselike": "^2.0.0" - }, - "engines": { - "node": ">=10.19.0" - }, - "funding": { - "url": "https://github.com/sindresorhus/got?sponsor=1" - } - }, "node_modules/graceful-fs": { "version": "4.2.11", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", @@ -13206,39 +11574,6 @@ "dev": true, "license": "MIT" }, - "node_modules/hosted-git-info": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.1.0.tgz", - "integrity": "sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==", - "dev": true, - "license": "ISC", - "dependencies": { - "lru-cache": "^6.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/hosted-git-info/node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "license": "ISC", - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/hosted-git-info/node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true, - "license": "ISC" - }, "node_modules/hpack.js": { "version": "2.1.6", "resolved": "https://registry.npmjs.org/hpack.js/-/hpack.js-2.1.6.tgz", @@ -13293,16 +11628,16 @@ } }, "node_modules/html-encoding-sniffer": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-3.0.0.tgz", - "integrity": "sha512-oWv4T4yJ52iKrufjnyZPkrN0CH3QnrUqdB6In1g5Fe1mia8GmF36gnfNySxoZtxD5+NmYw1EElVXiBk93UeskA==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-4.0.0.tgz", + "integrity": "sha512-Y22oTqIU4uuPgEemfz7NDJz6OeKf12Lsu+QC+s3BVpda64lTiMYCyGwg5ki4vFxkMwQdeZDl2adZoqUgdFuTgQ==", "dev": true, "license": "MIT", "dependencies": { - "whatwg-encoding": "^2.0.0" + "whatwg-encoding": "^3.1.1" }, "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/html-escaper": { @@ -13512,19 +11847,6 @@ } } }, - "node_modules/http-proxy-middleware/node_modules/is-plain-obj": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-3.0.0.tgz", - "integrity": "sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/http-proxy/node_modules/eventemitter3": { "version": "4.0.7", "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", @@ -13532,20 +11854,6 @@ "dev": true, "license": "MIT" }, - "node_modules/http2-wrapper": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/http2-wrapper/-/http2-wrapper-1.0.3.tgz", - "integrity": "sha512-V+23sDMr12Wnz7iTcDeJr3O6AIxlnvT/bmaAAAP/Xda35C90p9599p0F1eHR/N1KILWSoWVAiOMFjBBXaXSMxg==", - "dev": true, - "license": "MIT", - "dependencies": { - "quick-lru": "^5.1.1", - "resolve-alpn": "^1.0.0" - }, - "engines": { - "node": ">=10.19.0" - } - }, "node_modules/https-proxy-agent": { "version": "7.0.6", "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.6.tgz", @@ -13623,100 +11931,6 @@ "node": "^8.11.2 || >=10" } }, - "node_modules/iconv-corefoundation/node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "license": "MIT", - "optional": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/iconv-corefoundation/node_modules/cli-truncate": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-2.1.0.tgz", - "integrity": "sha512-n8fOixwDD6b/ObinzTrp1ZKFzbgvKZvuz/TvejnLn1aQfC6r52XEx85FmuC+3HI+JM7coBRXUvNqEU2PHVrHpg==", - "license": "MIT", - "optional": true, - "dependencies": { - "slice-ansi": "^3.0.0", - "string-width": "^4.2.0" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/iconv-corefoundation/node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "license": "MIT", - "optional": true - }, - "node_modules/iconv-corefoundation/node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "license": "MIT", - "optional": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/iconv-corefoundation/node_modules/node-addon-api": { - "version": "1.7.2", - "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-1.7.2.tgz", - "integrity": "sha512-ibPK3iA+vaY1eEjESkQkM0BbCqFOaZMiXRTtdB0u7b4djtY6JnsjvPdUHVMg6xQt3B8fpTTWHI9A+ADjM9frzg==", - "license": "MIT", - "optional": true - }, - "node_modules/iconv-corefoundation/node_modules/slice-ansi": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-3.0.0.tgz", - "integrity": "sha512-pSyv7bSTC7ig9Dcgbw9AuRNUb5k5V6oDudjZoMBSr13qpLBG7tB+zgCkARjq7xIUgdz5P1Qe8u+rSGdouOOIyQ==", - "license": "MIT", - "optional": true, - "dependencies": { - "ansi-styles": "^4.0.0", - "astral-regex": "^2.0.0", - "is-fullwidth-code-point": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/iconv-corefoundation/node_modules/string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "license": "MIT", - "optional": true, - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/iconv-corefoundation/node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "license": "MIT", - "optional": true, - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/iconv-lite": { "version": "0.6.3", "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", @@ -13780,9 +11994,9 @@ } }, "node_modules/immutable": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/immutable/-/immutable-5.1.2.tgz", - "integrity": "sha512-qHKXW1q6liAk1Oys6umoaZbDRqjcjgSrbnrifHsfsttza7zcvRAsL7mMV6xWcyhwQy7Xj5v4hhbr6b+iDYwlmQ==", + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/immutable/-/immutable-5.1.3.tgz", + "integrity": "sha512-+chQdDfvscSF1SJqv2gn4SRO2ZyS3xL3r7IW/wWEEzrzLisnOlKiQu5ytC/BVNcS15C39WT2Hg/bjKjDMcu+zg==", "dev": true, "license": "MIT" }, @@ -13803,29 +12017,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/import-from": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/import-from/-/import-from-3.0.0.tgz", - "integrity": "sha512-CiuXOFFSzkU5x/CR0+z7T91Iht4CXgfCxVOFRhh2Zyhg5wOpWvvDLQUsWl+gcN+QscYBjez8hDCt85O7RLDttQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "resolve-from": "^5.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/import-from/node_modules/resolve-from": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", - "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, "node_modules/import-local": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.2.0.tgz", @@ -14129,19 +12320,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/is-ci": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-3.0.1.tgz", - "integrity": "sha512-ZYvCgrefwqoQ6yTyYUbQu64HsITZ3NfKX1lzaEYdkTDcfKzzCI/wthRRYKkdjHKFVgNiXKAKm65Zo1pk2as/QQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "ci-info": "^3.2.0" - }, - "bin": { - "is-ci": "bin.js" - } - }, "node_modules/is-core-module": { "version": "2.16.1", "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.16.1.tgz", @@ -14236,16 +12414,13 @@ } }, "node_modules/is-fullwidth-code-point": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-4.0.0.tgz", - "integrity": "sha512-O4L094N2/dZ7xqVdrXhh9r1KODPJpFms8B5sGdJLPy664AgvXsreZUyCQQNItZRDlYug4xStLjNp/sz3HvBowQ==", - "dev": true, + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "devOptional": true, "license": "MIT", "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=8" } }, "node_modules/is-generator-fn": { @@ -14341,16 +12516,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/is-interactive": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-1.0.0.tgz", - "integrity": "sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, "node_modules/is-lambda": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/is-lambda/-/is-lambda-1.0.1.tgz", @@ -14425,13 +12590,16 @@ } }, "node_modules/is-plain-obj": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", - "integrity": "sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-3.0.0.tgz", + "integrity": "sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA==", "dev": true, "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/is-plain-object": { @@ -14576,19 +12744,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/is-unicode-supported": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", - "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/is-weakmap": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.2.tgz", @@ -14655,19 +12810,6 @@ "dev": true, "license": "MIT" }, - "node_modules/isbinaryfile": { - "version": "5.0.4", - "resolved": "https://registry.npmjs.org/isbinaryfile/-/isbinaryfile-5.0.4.tgz", - "integrity": "sha512-YKBKVkKhty7s8rxddb40oOkuP0NbaeXrQvLin6QMHL7Ypiy2RW9LwOVrVgZRyOrhQlayMd9t+D8yDy8MKFTSDQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 18.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/gjtorikian/" - } - }, "node_modules/isexe": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", @@ -14770,15 +12912,15 @@ } }, "node_modules/istanbul-lib-source-maps": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz", - "integrity": "sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==", + "version": "5.0.6", + "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-5.0.6.tgz", + "integrity": "sha512-yg2d+Em4KizZC5niWhQaIomgf5WlL4vOOjZ5xGCmF8SnPE/mDWWXgvRExdcpCgh9lLRRa1/fSYp2ymmbJ1pI+A==", "dev": true, "license": "BSD-3-Clause", "dependencies": { + "@jridgewell/trace-mapping": "^0.3.23", "debug": "^4.1.1", - "istanbul-lib-coverage": "^3.0.0", - "source-map": "^0.6.1" + "istanbul-lib-coverage": "^3.0.0" }, "engines": { "node": ">=10" @@ -14832,66 +12974,23 @@ "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/jake": { - "version": "10.9.2", - "resolved": "https://registry.npmjs.org/jake/-/jake-10.9.2.tgz", - "integrity": "sha512-2P4SQ0HrLQ+fw6llpLnOaGAvN2Zu6778SJMrCUwns4fOoG9ayrTiZk3VV8sCPkVZF8ab0zksVpS8FDY5pRCNBA==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "async": "^3.2.3", - "chalk": "^4.0.2", - "filelist": "^1.0.4", - "minimatch": "^3.1.2" - }, - "bin": { - "jake": "bin/cli.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/jake/node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/jake/node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dev": true, - "license": "ISC", - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, "node_modules/jest": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest/-/jest-29.7.0.tgz", - "integrity": "sha512-NIy3oAFp9shda19hy4HK0HRTWKtPJmGdnvywu01nOqNC2vZg+Z+fvJDxpMQA88eb2I9EcafcdjYgsDthnYTvGw==", + "version": "30.0.0", + "resolved": "https://registry.npmjs.org/jest/-/jest-30.0.0.tgz", + "integrity": "sha512-/3G2iFwsUY95vkflmlDn/IdLyLWqpQXcftptooaPH4qkyU52V7qVYf1BjmdSPlp1+0fs6BmNtrGaSFwOfV07ew==", "dev": true, "license": "MIT", "dependencies": { - "@jest/core": "^29.7.0", - "@jest/types": "^29.6.3", - "import-local": "^3.0.2", - "jest-cli": "^29.7.0" + "@jest/core": "30.0.0", + "@jest/types": "30.0.0", + "import-local": "^3.2.0", + "jest-cli": "30.0.0" }, "bin": { "jest": "bin/jest.js" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" }, "peerDependencies": { "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" @@ -14903,76 +13002,75 @@ } }, "node_modules/jest-changed-files": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-29.7.0.tgz", - "integrity": "sha512-fEArFiwf1BpQ+4bXSprcDc3/x4HSzL4al2tozwVpDFpsxALjLYdyiIK4e5Vz66GQJIbXJ82+35PtysofptNX2w==", + "version": "30.0.0", + "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-30.0.0.tgz", + "integrity": "sha512-rzGpvCdPdEV1Ma83c1GbZif0L2KAm3vXSXGRlpx7yCt0vhruwCNouKNRh3SiVcISHP1mb3iJzjb7tAEnNu1laQ==", "dev": true, "license": "MIT", "dependencies": { - "execa": "^5.0.0", - "jest-util": "^29.7.0", + "execa": "^5.1.1", + "jest-util": "30.0.0", "p-limit": "^3.1.0" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, "node_modules/jest-circus": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-29.7.0.tgz", - "integrity": "sha512-3E1nCMgipcTkCocFwM90XXQab9bS+GMsjdpmPrlelaxwD93Ad8iVEjX/vvHPdLPnFf+L40u+5+iutRdA1N9myw==", + "version": "30.0.0", + "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-30.0.0.tgz", + "integrity": "sha512-nTwah78qcKVyndBS650hAkaEmwWGaVsMMoWdJwMnH77XArRJow2Ir7hc+8p/mATtxVZuM9OTkA/3hQocRIK5Dw==", "dev": true, "license": "MIT", "dependencies": { - "@jest/environment": "^29.7.0", - "@jest/expect": "^29.7.0", - "@jest/test-result": "^29.7.0", - "@jest/types": "^29.6.3", + "@jest/environment": "30.0.0", + "@jest/expect": "30.0.0", + "@jest/test-result": "30.0.0", + "@jest/types": "30.0.0", "@types/node": "*", - "chalk": "^4.0.0", + "chalk": "^4.1.2", "co": "^4.6.0", - "dedent": "^1.0.0", - "is-generator-fn": "^2.0.0", - "jest-each": "^29.7.0", - "jest-matcher-utils": "^29.7.0", - "jest-message-util": "^29.7.0", - "jest-runtime": "^29.7.0", - "jest-snapshot": "^29.7.0", - "jest-util": "^29.7.0", + "dedent": "^1.6.0", + "is-generator-fn": "^2.1.0", + "jest-each": "30.0.0", + "jest-matcher-utils": "30.0.0", + "jest-message-util": "30.0.0", + "jest-runtime": "30.0.0", + "jest-snapshot": "30.0.0", + "jest-util": "30.0.0", "p-limit": "^3.1.0", - "pretty-format": "^29.7.0", - "pure-rand": "^6.0.0", + "pretty-format": "30.0.0", + "pure-rand": "^7.0.0", "slash": "^3.0.0", - "stack-utils": "^2.0.3" + "stack-utils": "^2.0.6" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, "node_modules/jest-cli": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-29.7.0.tgz", - "integrity": "sha512-OVVobw2IubN/GSYsxETi+gOe7Ka59EFMR/twOU3Jb2GnKKeMGJB5SGUUrEz3SFVmJASUdZUzy83sLNNQ2gZslg==", + "version": "30.0.0", + "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-30.0.0.tgz", + "integrity": "sha512-fWKAgrhlwVVCfeizsmIrPRTBYTzO82WSba3gJniZNR3PKXADgdC0mmCSK+M+t7N8RCXOVfY6kvCkvjUNtzmHYQ==", "dev": true, "license": "MIT", "dependencies": { - "@jest/core": "^29.7.0", - "@jest/test-result": "^29.7.0", - "@jest/types": "^29.6.3", - "chalk": "^4.0.0", - "create-jest": "^29.7.0", - "exit": "^0.1.2", - "import-local": "^3.0.2", - "jest-config": "^29.7.0", - "jest-util": "^29.7.0", - "jest-validate": "^29.7.0", - "yargs": "^17.3.1" + "@jest/core": "30.0.0", + "@jest/test-result": "30.0.0", + "@jest/types": "30.0.0", + "chalk": "^4.1.2", + "exit-x": "^0.2.2", + "import-local": "^3.2.0", + "jest-config": "30.0.0", + "jest-util": "30.0.0", + "jest-validate": "30.0.0", + "yargs": "^17.7.2" }, "bin": { "jest": "bin/jest.js" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" }, "peerDependencies": { "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" @@ -14984,164 +13082,215 @@ } }, "node_modules/jest-config": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-29.7.0.tgz", - "integrity": "sha512-uXbpfeQ7R6TZBqI3/TxCU4q4ttk3u0PJeC+E0zbfSoSjq6bJ7buBPxzQPL0ifrkY4DNu4JUdk0ImlBUYi840eQ==", + "version": "30.0.0", + "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-30.0.0.tgz", + "integrity": "sha512-p13a/zun+sbOMrBnTEUdq/5N7bZMOGd1yMfqtAJniPNuzURMay4I+vxZLK1XSDbjvIhmeVdG8h8RznqYyjctyg==", "dev": true, "license": "MIT", "dependencies": { - "@babel/core": "^7.11.6", - "@jest/test-sequencer": "^29.7.0", - "@jest/types": "^29.6.3", - "babel-jest": "^29.7.0", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "deepmerge": "^4.2.2", - "glob": "^7.1.3", - "graceful-fs": "^4.2.9", - "jest-circus": "^29.7.0", - "jest-environment-node": "^29.7.0", - "jest-get-type": "^29.6.3", - "jest-regex-util": "^29.6.3", - "jest-resolve": "^29.7.0", - "jest-runner": "^29.7.0", - "jest-util": "^29.7.0", - "jest-validate": "^29.7.0", - "micromatch": "^4.0.4", + "@babel/core": "^7.27.4", + "@jest/get-type": "30.0.0", + "@jest/pattern": "30.0.0", + "@jest/test-sequencer": "30.0.0", + "@jest/types": "30.0.0", + "babel-jest": "30.0.0", + "chalk": "^4.1.2", + "ci-info": "^4.2.0", + "deepmerge": "^4.3.1", + "glob": "^10.3.10", + "graceful-fs": "^4.2.11", + "jest-circus": "30.0.0", + "jest-docblock": "30.0.0", + "jest-environment-node": "30.0.0", + "jest-regex-util": "30.0.0", + "jest-resolve": "30.0.0", + "jest-runner": "30.0.0", + "jest-util": "30.0.0", + "jest-validate": "30.0.0", + "micromatch": "^4.0.8", "parse-json": "^5.2.0", - "pretty-format": "^29.7.0", + "pretty-format": "30.0.0", "slash": "^3.0.0", "strip-json-comments": "^3.1.1" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" }, "peerDependencies": { "@types/node": "*", + "esbuild-register": ">=3.4.0", "ts-node": ">=9.0.0" }, "peerDependenciesMeta": { "@types/node": { "optional": true }, + "esbuild-register": { + "optional": true + }, "ts-node": { "optional": true } } }, + "node_modules/jest-config/node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true, + "license": "MIT" + }, "node_modules/jest-config/node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", + "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", "dev": true, "license": "MIT", "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" + "balanced-match": "^1.0.0" } }, "node_modules/jest-config/node_modules/glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "deprecated": "Glob versions prior to v9 are no longer supported", + "version": "10.4.5", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz", + "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==", "dev": true, "license": "ISC", "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" + "foreground-child": "^3.1.0", + "jackspeak": "^3.1.2", + "minimatch": "^9.0.4", + "minipass": "^7.1.2", + "package-json-from-dist": "^1.0.0", + "path-scurry": "^1.11.1" }, - "engines": { - "node": "*" + "bin": { + "glob": "dist/esm/bin.mjs" }, "funding": { "url": "https://github.com/sponsors/isaacs" } }, + "node_modules/jest-config/node_modules/jackspeak": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz", + "integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==", + "dev": true, + "license": "BlueOak-1.0.0", + "dependencies": { + "@isaacs/cliui": "^8.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + }, + "optionalDependencies": { + "@pkgjs/parseargs": "^0.11.0" + } + }, + "node_modules/jest-config/node_modules/lru-cache": { + "version": "10.4.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", + "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", + "dev": true, + "license": "ISC" + }, "node_modules/jest-config/node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", "dev": true, "license": "ISC", "dependencies": { - "brace-expansion": "^1.1.7" + "brace-expansion": "^2.0.1" }, "engines": { - "node": "*" + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/jest-config/node_modules/path-scurry": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz", + "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==", + "dev": true, + "license": "BlueOak-1.0.0", + "dependencies": { + "lru-cache": "^10.2.0", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" + }, + "engines": { + "node": ">=16 || 14 >=14.18" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, "node_modules/jest-diff": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-29.7.0.tgz", - "integrity": "sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw==", + "version": "30.0.0", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-30.0.0.tgz", + "integrity": "sha512-TgT1+KipV8JTLXXeFX0qSvIJR/UXiNNojjxb/awh3vYlBZyChU/NEmyKmq+wijKjWEztyrGJFL790nqMqNjTHA==", "dev": true, "license": "MIT", "dependencies": { - "chalk": "^4.0.0", - "diff-sequences": "^29.6.3", - "jest-get-type": "^29.6.3", - "pretty-format": "^29.7.0" + "@jest/diff-sequences": "30.0.0", + "@jest/get-type": "30.0.0", + "chalk": "^4.1.2", + "pretty-format": "30.0.0" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, "node_modules/jest-docblock": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-29.7.0.tgz", - "integrity": "sha512-q617Auw3A612guyaFgsbFeYpNP5t2aoUNLwBUbc/0kD1R4t9ixDbyFTHd1nok4epoVFpr7PmeWHrhvuV3XaJ4g==", + "version": "30.0.0", + "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-30.0.0.tgz", + "integrity": "sha512-By/iQ0nvTzghEecGzUMCp1axLtBh+8wB4Hpoi5o+x1stycjEmPcH1mHugL4D9Q+YKV++vKeX/3ZTW90QC8ICPg==", "dev": true, "license": "MIT", "dependencies": { - "detect-newline": "^3.0.0" + "detect-newline": "^3.1.0" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, "node_modules/jest-each": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-29.7.0.tgz", - "integrity": "sha512-gns+Er14+ZrEoC5fhOfYCY1LOHHr0TI+rQUHZS8Ttw2l7gl+80eHc/gFf2Ktkw0+SIACDTeWvpFcv3B04VembQ==", + "version": "30.0.0", + "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-30.0.0.tgz", + "integrity": "sha512-qkFEW3cfytEjG2KtrhwtldZfXYnWSanO8xUMXLe4A6yaiHMHJUalk0Yyv4MQH6aeaxgi4sGVrukvF0lPMM7U1w==", "dev": true, "license": "MIT", "dependencies": { - "@jest/types": "^29.6.3", - "chalk": "^4.0.0", - "jest-get-type": "^29.6.3", - "jest-util": "^29.7.0", - "pretty-format": "^29.7.0" + "@jest/get-type": "30.0.0", + "@jest/types": "30.0.0", + "chalk": "^4.1.2", + "jest-util": "30.0.0", + "pretty-format": "30.0.0" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, "node_modules/jest-environment-jsdom": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-29.7.0.tgz", - "integrity": "sha512-k9iQbsf9OyOfdzWH8HDmrRT0gSIcX+FLNW7IQq94tFX0gynPwqDTW0Ho6iMVNjGz/nb+l/vW3dWM2bbLLpkbXA==", + "version": "30.0.0", + "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-30.0.0.tgz", + "integrity": "sha512-IjDRABkSx+HpO7+WGVKPZL5XZajWRsMo2iQIudyiG4BhCi9Uah9HrFluqLUXdjPkIOoox+utUEUl8TDR2kc/Og==", "dev": true, "license": "MIT", "dependencies": { - "@jest/environment": "^29.7.0", - "@jest/fake-timers": "^29.7.0", - "@jest/types": "^29.6.3", - "@types/jsdom": "^20.0.0", + "@jest/environment": "30.0.0", + "@jest/environment-jsdom-abstract": "30.0.0", + "@types/jsdom": "^21.1.7", "@types/node": "*", - "jest-mock": "^29.7.0", - "jest-util": "^29.7.0", - "jsdom": "^20.0.0" + "jsdom": "^26.1.0" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" }, "peerDependencies": { - "canvas": "^2.5.0" + "canvas": "^3.0.0" }, "peerDependenciesMeta": { "canvas": { @@ -15150,123 +13299,113 @@ } }, "node_modules/jest-environment-node": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-29.7.0.tgz", - "integrity": "sha512-DOSwCRqXirTOyheM+4d5YZOrWcdu0LNZ87ewUoywbcb2XR4wKgqiG8vNeYwhjFMbEkfju7wx2GYH0P2gevGvFw==", + "version": "30.0.0", + "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-30.0.0.tgz", + "integrity": "sha512-sF6lxyA25dIURyDk4voYmGU9Uwz2rQKMfjxKnDd19yk+qxKGrimFqS5YsPHWTlAVBo+YhWzXsqZoaMzrTFvqfg==", "dev": true, "license": "MIT", "dependencies": { - "@jest/environment": "^29.7.0", - "@jest/fake-timers": "^29.7.0", - "@jest/types": "^29.6.3", + "@jest/environment": "30.0.0", + "@jest/fake-timers": "30.0.0", + "@jest/types": "30.0.0", "@types/node": "*", - "jest-mock": "^29.7.0", - "jest-util": "^29.7.0" + "jest-mock": "30.0.0", + "jest-util": "30.0.0", + "jest-validate": "30.0.0" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-get-type": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-29.6.3.tgz", - "integrity": "sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, "node_modules/jest-haste-map": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-29.7.0.tgz", - "integrity": "sha512-fP8u2pyfqx0K1rGn1R9pyE0/KTn+G7PxktWidOBTqFPLYX0b9ksaMFkhK5vrS3DVun09pckLdlx90QthlW7AmA==", + "version": "30.0.0", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-30.0.0.tgz", + "integrity": "sha512-p4bXAhXTawTsADgQgTpbymdLaTyPW1xWNu1oIGG7/N3LIAbZVkH2JMJqS8/IUcnGR8Kc7WFE+vWbJvsqGCWZXw==", "dev": true, "license": "MIT", "dependencies": { - "@jest/types": "^29.6.3", - "@types/graceful-fs": "^4.1.3", + "@jest/types": "30.0.0", "@types/node": "*", - "anymatch": "^3.0.3", - "fb-watchman": "^2.0.0", - "graceful-fs": "^4.2.9", - "jest-regex-util": "^29.6.3", - "jest-util": "^29.7.0", - "jest-worker": "^29.7.0", - "micromatch": "^4.0.4", + "anymatch": "^3.1.3", + "fb-watchman": "^2.0.2", + "graceful-fs": "^4.2.11", + "jest-regex-util": "30.0.0", + "jest-util": "30.0.0", + "jest-worker": "30.0.0", + "micromatch": "^4.0.8", "walker": "^1.0.8" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" }, "optionalDependencies": { - "fsevents": "^2.3.2" + "fsevents": "^2.3.3" } }, "node_modules/jest-leak-detector": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-29.7.0.tgz", - "integrity": "sha512-kYA8IJcSYtST2BY9I+SMC32nDpBT3J2NvWJx8+JCuCdl/CR1I4EKUJROiP8XtCcxqgTTBGJNdbB1A8XRKbTetw==", + "version": "30.0.0", + "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-30.0.0.tgz", + "integrity": "sha512-E/ly1azdVVbZrS0T6FIpyYHvsdek4FNaThJTtggjV/8IpKxh3p9NLndeUZy2+sjAI3ncS+aM0uLLon/dBg8htA==", "dev": true, "license": "MIT", "dependencies": { - "jest-get-type": "^29.6.3", - "pretty-format": "^29.7.0" + "@jest/get-type": "30.0.0", + "pretty-format": "30.0.0" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, "node_modules/jest-matcher-utils": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-29.7.0.tgz", - "integrity": "sha512-sBkD+Xi9DtcChsI3L3u0+N0opgPYnCRPtGcQYrgXmR+hmt/fYfWAL0xRXYU8eWOdfuLgBe0YCW3AFtnRLagq/g==", + "version": "30.0.0", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-30.0.0.tgz", + "integrity": "sha512-m5mrunqopkrqwG1mMdJxe1J4uGmS9AHHKYUmoxeQOxBcLjEvirIrIDwuKmUYrecPHVB/PUBpXs2gPoeA2FSSLQ==", "dev": true, "license": "MIT", "dependencies": { - "chalk": "^4.0.0", - "jest-diff": "^29.7.0", - "jest-get-type": "^29.6.3", - "pretty-format": "^29.7.0" + "@jest/get-type": "30.0.0", + "chalk": "^4.1.2", + "jest-diff": "30.0.0", + "pretty-format": "30.0.0" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, "node_modules/jest-message-util": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-29.7.0.tgz", - "integrity": "sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w==", + "version": "30.0.0", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-30.0.0.tgz", + "integrity": "sha512-pV3qcrb4utEsa/U7UI2VayNzSDQcmCllBZLSoIucrESRu0geKThFZOjjh0kACDJFJRAQwsK7GVsmS6SpEceD8w==", "dev": true, "license": "MIT", "dependencies": { - "@babel/code-frame": "^7.12.13", - "@jest/types": "^29.6.3", - "@types/stack-utils": "^2.0.0", - "chalk": "^4.0.0", - "graceful-fs": "^4.2.9", - "micromatch": "^4.0.4", - "pretty-format": "^29.7.0", + "@babel/code-frame": "^7.27.1", + "@jest/types": "30.0.0", + "@types/stack-utils": "^2.0.3", + "chalk": "^4.1.2", + "graceful-fs": "^4.2.11", + "micromatch": "^4.0.8", + "pretty-format": "30.0.0", "slash": "^3.0.0", - "stack-utils": "^2.0.3" + "stack-utils": "^2.0.6" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, "node_modules/jest-mock": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-29.7.0.tgz", - "integrity": "sha512-ITOMZn+UkYS4ZFh83xYAOzWStloNzJFO2s8DWrE4lhtGD+AorgnbkiKERe4wQVBydIGPx059g6riW5Btp6Llnw==", + "version": "30.0.0", + "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-30.0.0.tgz", + "integrity": "sha512-W2sRA4ALXILrEetEOh2ooZG6fZ01iwVs0OWMKSSWRcUlaLr4ESHuiKXDNTg+ZVgOq8Ei5445i/Yxrv59VT+XkA==", "dev": true, "license": "MIT", "dependencies": { - "@jest/types": "^29.6.3", + "@jest/types": "30.0.0", "@types/node": "*", - "jest-util": "^29.7.0" + "jest-util": "30.0.0" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, "node_modules/jest-pnp-resolver": { @@ -15288,81 +13427,81 @@ } }, "node_modules/jest-regex-util": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-29.6.3.tgz", - "integrity": "sha512-KJJBsRCyyLNWCNBOvZyRDnAIfUiRJ8v+hOBQYGn8gDyF3UegwiP4gwRR3/SDa42g1YbVycTidUF3rKjyLFDWbg==", + "version": "30.0.0", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-30.0.0.tgz", + "integrity": "sha512-rT84010qRu/5OOU7a9TeidC2Tp3Qgt9Sty4pOZ/VSDuEmRupIjKZAb53gU3jr4ooMlhwScrgC9UixJxWzVu9oQ==", "dev": true, "license": "MIT", "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, "node_modules/jest-resolve": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-29.7.0.tgz", - "integrity": "sha512-IOVhZSrg+UvVAshDSDtHyFCCBUl/Q3AAJv8iZ6ZjnZ74xzvwuzLXid9IIIPgTnY62SJjfuupMKZsZQRsCvxEgA==", + "version": "30.0.0", + "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-30.0.0.tgz", + "integrity": "sha512-zwWl1P15CcAfuQCEuxszjiKdsValhnWcj/aXg/R3aMHs8HVoCWHC4B/+5+1BirMoOud8NnN85GSP2LEZCbj3OA==", "dev": true, "license": "MIT", "dependencies": { - "chalk": "^4.0.0", - "graceful-fs": "^4.2.9", - "jest-haste-map": "^29.7.0", - "jest-pnp-resolver": "^1.2.2", - "jest-util": "^29.7.0", - "jest-validate": "^29.7.0", - "resolve": "^1.20.0", - "resolve.exports": "^2.0.0", - "slash": "^3.0.0" + "chalk": "^4.1.2", + "graceful-fs": "^4.2.11", + "jest-haste-map": "30.0.0", + "jest-pnp-resolver": "^1.2.3", + "jest-util": "30.0.0", + "jest-validate": "30.0.0", + "slash": "^3.0.0", + "unrs-resolver": "^1.7.11" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, "node_modules/jest-resolve-dependencies": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-29.7.0.tgz", - "integrity": "sha512-un0zD/6qxJ+S0et7WxeI3H5XSe9lTBBR7bOHCHXkKR6luG5mwDDlIzVQ0V5cZCuoTgEdcdwzTghYkTWfubi+nA==", + "version": "30.0.0", + "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-30.0.0.tgz", + "integrity": "sha512-Yhh7odCAUNXhluK1bCpwIlHrN1wycYaTlZwq1GdfNBEESNNI/z1j1a7dUEWHbmB9LGgv0sanxw3JPmWU8NeebQ==", "dev": true, "license": "MIT", "dependencies": { - "jest-regex-util": "^29.6.3", - "jest-snapshot": "^29.7.0" + "jest-regex-util": "30.0.0", + "jest-snapshot": "30.0.0" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, "node_modules/jest-runner": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-29.7.0.tgz", - "integrity": "sha512-fsc4N6cPCAahybGBfTRcq5wFR6fpLznMg47sY5aDpsoejOcVYFb07AHuSnR0liMcPTgBsA3ZJL6kFOjPdoNipQ==", + "version": "30.0.0", + "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-30.0.0.tgz", + "integrity": "sha512-xbhmvWIc8X1IQ8G7xTv0AQJXKjBVyxoVJEJgy7A4RXsSaO+k/1ZSBbHwjnUhvYqMvwQPomWssDkUx6EoidEhlw==", "dev": true, "license": "MIT", "dependencies": { - "@jest/console": "^29.7.0", - "@jest/environment": "^29.7.0", - "@jest/test-result": "^29.7.0", - "@jest/transform": "^29.7.0", - "@jest/types": "^29.6.3", + "@jest/console": "30.0.0", + "@jest/environment": "30.0.0", + "@jest/test-result": "30.0.0", + "@jest/transform": "30.0.0", + "@jest/types": "30.0.0", "@types/node": "*", - "chalk": "^4.0.0", + "chalk": "^4.1.2", "emittery": "^0.13.1", - "graceful-fs": "^4.2.9", - "jest-docblock": "^29.7.0", - "jest-environment-node": "^29.7.0", - "jest-haste-map": "^29.7.0", - "jest-leak-detector": "^29.7.0", - "jest-message-util": "^29.7.0", - "jest-resolve": "^29.7.0", - "jest-runtime": "^29.7.0", - "jest-util": "^29.7.0", - "jest-watcher": "^29.7.0", - "jest-worker": "^29.7.0", + "exit-x": "^0.2.2", + "graceful-fs": "^4.2.11", + "jest-docblock": "30.0.0", + "jest-environment-node": "30.0.0", + "jest-haste-map": "30.0.0", + "jest-leak-detector": "30.0.0", + "jest-message-util": "30.0.0", + "jest-resolve": "30.0.0", + "jest-runtime": "30.0.0", + "jest-util": "30.0.0", + "jest-watcher": "30.0.0", + "jest-worker": "30.0.0", "p-limit": "^3.1.0", "source-map-support": "0.5.13" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, "node_modules/jest-runner/node_modules/source-map-support": { @@ -15377,115 +13516,164 @@ } }, "node_modules/jest-runtime": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-29.7.0.tgz", - "integrity": "sha512-gUnLjgwdGqW7B4LvOIkbKs9WGbn+QLqRQQ9juC6HndeDiezIwhDP+mhMwHWCEcfQ5RUXa6OPnFF8BJh5xegwwQ==", + "version": "30.0.0", + "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-30.0.0.tgz", + "integrity": "sha512-/O07qVgFrFAOGKGigojmdR3jUGz/y3+a/v9S/Yi2MHxsD+v6WcPppglZJw0gNJkRBArRDK8CFAwpM/VuEiiRjA==", "dev": true, "license": "MIT", "dependencies": { - "@jest/environment": "^29.7.0", - "@jest/fake-timers": "^29.7.0", - "@jest/globals": "^29.7.0", - "@jest/source-map": "^29.6.3", - "@jest/test-result": "^29.7.0", - "@jest/transform": "^29.7.0", - "@jest/types": "^29.6.3", + "@jest/environment": "30.0.0", + "@jest/fake-timers": "30.0.0", + "@jest/globals": "30.0.0", + "@jest/source-map": "30.0.0", + "@jest/test-result": "30.0.0", + "@jest/transform": "30.0.0", + "@jest/types": "30.0.0", "@types/node": "*", - "chalk": "^4.0.0", - "cjs-module-lexer": "^1.0.0", - "collect-v8-coverage": "^1.0.0", - "glob": "^7.1.3", - "graceful-fs": "^4.2.9", - "jest-haste-map": "^29.7.0", - "jest-message-util": "^29.7.0", - "jest-mock": "^29.7.0", - "jest-regex-util": "^29.6.3", - "jest-resolve": "^29.7.0", - "jest-snapshot": "^29.7.0", - "jest-util": "^29.7.0", + "chalk": "^4.1.2", + "cjs-module-lexer": "^2.1.0", + "collect-v8-coverage": "^1.0.2", + "glob": "^10.3.10", + "graceful-fs": "^4.2.11", + "jest-haste-map": "30.0.0", + "jest-message-util": "30.0.0", + "jest-mock": "30.0.0", + "jest-regex-util": "30.0.0", + "jest-resolve": "30.0.0", + "jest-snapshot": "30.0.0", + "jest-util": "30.0.0", "slash": "^3.0.0", "strip-bom": "^4.0.0" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, + "node_modules/jest-runtime/node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true, + "license": "MIT" + }, "node_modules/jest-runtime/node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", + "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", "dev": true, "license": "MIT", "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" + "balanced-match": "^1.0.0" } }, "node_modules/jest-runtime/node_modules/glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "deprecated": "Glob versions prior to v9 are no longer supported", + "version": "10.4.5", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz", + "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==", "dev": true, "license": "ISC", "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" + "foreground-child": "^3.1.0", + "jackspeak": "^3.1.2", + "minimatch": "^9.0.4", + "minipass": "^7.1.2", + "package-json-from-dist": "^1.0.0", + "path-scurry": "^1.11.1" }, - "engines": { - "node": "*" + "bin": { + "glob": "dist/esm/bin.mjs" }, "funding": { "url": "https://github.com/sponsors/isaacs" } }, + "node_modules/jest-runtime/node_modules/jackspeak": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz", + "integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==", + "dev": true, + "license": "BlueOak-1.0.0", + "dependencies": { + "@isaacs/cliui": "^8.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + }, + "optionalDependencies": { + "@pkgjs/parseargs": "^0.11.0" + } + }, + "node_modules/jest-runtime/node_modules/lru-cache": { + "version": "10.4.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", + "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", + "dev": true, + "license": "ISC" + }, "node_modules/jest-runtime/node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", "dev": true, "license": "ISC", "dependencies": { - "brace-expansion": "^1.1.7" + "brace-expansion": "^2.0.1" }, "engines": { - "node": "*" + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/jest-runtime/node_modules/path-scurry": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz", + "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==", + "dev": true, + "license": "BlueOak-1.0.0", + "dependencies": { + "lru-cache": "^10.2.0", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" + }, + "engines": { + "node": ">=16 || 14 >=14.18" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, "node_modules/jest-snapshot": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-29.7.0.tgz", - "integrity": "sha512-Rm0BMWtxBcioHr1/OX5YCP8Uov4riHvKPknOGs804Zg9JGZgmIBkbtlxJC/7Z4msKYVbIJtfU+tKb8xlYNfdkw==", + "version": "30.0.0", + "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-30.0.0.tgz", + "integrity": "sha512-6oCnzjpvfj/UIOMTqKZ6gedWAUgaycMdV8Y8h2dRJPvc2wSjckN03pzeoonw8y33uVngfx7WMo1ygdRGEKOT7w==", "dev": true, "license": "MIT", "dependencies": { - "@babel/core": "^7.11.6", - "@babel/generator": "^7.7.2", - "@babel/plugin-syntax-jsx": "^7.7.2", - "@babel/plugin-syntax-typescript": "^7.7.2", - "@babel/types": "^7.3.3", - "@jest/expect-utils": "^29.7.0", - "@jest/transform": "^29.7.0", - "@jest/types": "^29.6.3", - "babel-preset-current-node-syntax": "^1.0.0", - "chalk": "^4.0.0", - "expect": "^29.7.0", - "graceful-fs": "^4.2.9", - "jest-diff": "^29.7.0", - "jest-get-type": "^29.6.3", - "jest-matcher-utils": "^29.7.0", - "jest-message-util": "^29.7.0", - "jest-util": "^29.7.0", - "natural-compare": "^1.4.0", - "pretty-format": "^29.7.0", - "semver": "^7.5.3" + "@babel/core": "^7.27.4", + "@babel/generator": "^7.27.5", + "@babel/plugin-syntax-jsx": "^7.27.1", + "@babel/plugin-syntax-typescript": "^7.27.1", + "@babel/types": "^7.27.3", + "@jest/expect-utils": "30.0.0", + "@jest/get-type": "30.0.0", + "@jest/snapshot-utils": "30.0.0", + "@jest/transform": "30.0.0", + "@jest/types": "30.0.0", + "babel-preset-current-node-syntax": "^1.1.0", + "chalk": "^4.1.2", + "expect": "30.0.0", + "graceful-fs": "^4.2.11", + "jest-diff": "30.0.0", + "jest-matcher-utils": "30.0.0", + "jest-message-util": "30.0.0", + "jest-util": "30.0.0", + "pretty-format": "30.0.0", + "semver": "^7.7.2", + "synckit": "^0.11.8" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, "node_modules/jest-snapshot/node_modules/semver": { @@ -15502,52 +13690,39 @@ } }, "node_modules/jest-util": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.7.0.tgz", - "integrity": "sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==", + "version": "30.0.0", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-30.0.0.tgz", + "integrity": "sha512-fhNBBM9uSUbd4Lzsf8l/kcAdaHD/4SgoI48en3HXcBEMwKwoleKFMZ6cYEYs21SB779PRuRCyNLmymApAm8tZw==", "dev": true, "license": "MIT", "dependencies": { - "@jest/types": "^29.6.3", + "@jest/types": "30.0.0", "@types/node": "*", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "graceful-fs": "^4.2.9", - "picomatch": "^2.2.3" + "chalk": "^4.1.2", + "ci-info": "^4.2.0", + "graceful-fs": "^4.2.11", + "picomatch": "^4.0.2" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-util/node_modules/picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8.6" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, "node_modules/jest-validate": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-29.7.0.tgz", - "integrity": "sha512-ZB7wHqaRGVw/9hST/OuFUReG7M8vKeq0/J2egIGLdvjHCmYqGARhzXmtgi+gVeZ5uXFF219aOc3Ls2yLg27tkw==", + "version": "30.0.0", + "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-30.0.0.tgz", + "integrity": "sha512-d6OkzsdlWItHAikUDs1hlLmpOIRhsZoXTCliV2XXalVQ3ZOeb9dy0CQ6AKulJu/XOZqpOEr/FiMH+FeOBVV+nw==", "dev": true, "license": "MIT", "dependencies": { - "@jest/types": "^29.6.3", - "camelcase": "^6.2.0", - "chalk": "^4.0.0", - "jest-get-type": "^29.6.3", + "@jest/get-type": "30.0.0", + "@jest/types": "30.0.0", + "camelcase": "^6.3.0", + "chalk": "^4.1.2", "leven": "^3.1.0", - "pretty-format": "^29.7.0" + "pretty-format": "30.0.0" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, "node_modules/jest-validate/node_modules/camelcase": { @@ -15564,39 +13739,40 @@ } }, "node_modules/jest-watcher": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-29.7.0.tgz", - "integrity": "sha512-49Fg7WXkU3Vl2h6LbLtMQ/HyB6rXSIX7SqvBLQmssRBGN9I0PNvPmAmCWSOY6SOvrjhI/F7/bGAv9RtnsPA03g==", + "version": "30.0.0", + "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-30.0.0.tgz", + "integrity": "sha512-fbAkojcyS53bOL/B7XYhahORq9cIaPwOgd/p9qW/hybbC8l6CzxfWJJxjlPBAIVN8dRipLR0zdhpGQdam+YBtw==", "dev": true, "license": "MIT", "dependencies": { - "@jest/test-result": "^29.7.0", - "@jest/types": "^29.6.3", + "@jest/test-result": "30.0.0", + "@jest/types": "30.0.0", "@types/node": "*", - "ansi-escapes": "^4.2.1", - "chalk": "^4.0.0", + "ansi-escapes": "^4.3.2", + "chalk": "^4.1.2", "emittery": "^0.13.1", - "jest-util": "^29.7.0", - "string-length": "^4.0.1" + "jest-util": "30.0.0", + "string-length": "^4.0.2" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, "node_modules/jest-worker": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-29.7.0.tgz", - "integrity": "sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==", + "version": "30.0.0", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-30.0.0.tgz", + "integrity": "sha512-VZvxfWIybIvwK8N/Bsfe43LfQgd/rD0c4h5nLUx78CAqPxIQcW2qDjsVAC53iUR8yxzFIeCFFvWOh8en8hGzdg==", "dev": true, "license": "MIT", "dependencies": { "@types/node": "*", - "jest-util": "^29.7.0", + "@ungap/structured-clone": "^1.3.0", + "jest-util": "30.0.0", "merge-stream": "^2.0.0", - "supports-color": "^8.0.0" + "supports-color": "^8.1.1" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, "node_modules/jest-worker/node_modules/supports-color": { @@ -15666,44 +13842,38 @@ "license": "MIT" }, "node_modules/jsdom": { - "version": "20.0.3", - "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-20.0.3.tgz", - "integrity": "sha512-SYhBvTh89tTfCD/CRdSOm13mOBa42iTaTyfyEWBdKcGdPxPtLFBXuHR8XHb33YNYaP+lLbmSvBTsnoesCNJEsQ==", + "version": "26.1.0", + "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-26.1.0.tgz", + "integrity": "sha512-Cvc9WUhxSMEo4McES3P7oK3QaXldCfNWp7pl2NNeiIFlCoLr3kfq9kb1fxftiwk1FLV7CvpvDfonxtzUDeSOPg==", "dev": true, "license": "MIT", "dependencies": { - "abab": "^2.0.6", - "acorn": "^8.8.1", - "acorn-globals": "^7.0.0", - "cssom": "^0.5.0", - "cssstyle": "^2.3.0", - "data-urls": "^3.0.2", - "decimal.js": "^10.4.2", - "domexception": "^4.0.0", - "escodegen": "^2.0.0", - "form-data": "^4.0.0", - "html-encoding-sniffer": "^3.0.0", - "http-proxy-agent": "^5.0.0", - "https-proxy-agent": "^5.0.1", + "cssstyle": "^4.2.1", + "data-urls": "^5.0.0", + "decimal.js": "^10.5.0", + "html-encoding-sniffer": "^4.0.0", + "http-proxy-agent": "^7.0.2", + "https-proxy-agent": "^7.0.6", "is-potential-custom-element-name": "^1.0.1", - "nwsapi": "^2.2.2", - "parse5": "^7.1.1", + "nwsapi": "^2.2.16", + "parse5": "^7.2.1", + "rrweb-cssom": "^0.8.0", "saxes": "^6.0.0", "symbol-tree": "^3.2.4", - "tough-cookie": "^4.1.2", - "w3c-xmlserializer": "^4.0.0", + "tough-cookie": "^5.1.1", + "w3c-xmlserializer": "^5.0.0", "webidl-conversions": "^7.0.0", - "whatwg-encoding": "^2.0.0", - "whatwg-mimetype": "^3.0.0", - "whatwg-url": "^11.0.0", - "ws": "^8.11.0", - "xml-name-validator": "^4.0.0" + "whatwg-encoding": "^3.1.1", + "whatwg-mimetype": "^4.0.0", + "whatwg-url": "^14.1.1", + "ws": "^8.18.0", + "xml-name-validator": "^5.0.0" }, "engines": { - "node": ">=14" + "node": ">=18" }, "peerDependencies": { - "canvas": "^2.5.0" + "canvas": "^3.0.0" }, "peerDependenciesMeta": { "canvas": { @@ -15711,48 +13881,6 @@ } } }, - "node_modules/jsdom/node_modules/agent-base": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", - "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "debug": "4" - }, - "engines": { - "node": ">= 6.0.0" - } - }, - "node_modules/jsdom/node_modules/http-proxy-agent": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz", - "integrity": "sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==", - "dev": true, - "license": "MIT", - "dependencies": { - "@tootallnate/once": "2", - "agent-base": "6", - "debug": "4" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/jsdom/node_modules/https-proxy-agent": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", - "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", - "dev": true, - "license": "MIT", - "dependencies": { - "agent-base": "6", - "debug": "4" - }, - "engines": { - "node": ">= 6" - } - }, "node_modules/jsesc": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.1.0.tgz", @@ -15794,14 +13922,6 @@ "dev": true, "license": "MIT" }, - "node_modules/json-stringify-safe": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", - "integrity": "sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==", - "dev": true, - "license": "ISC", - "optional": true - }, "node_modules/json5": { "version": "2.2.3", "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", @@ -15815,16 +13935,6 @@ "node": ">=6" } }, - "node_modules/jsonfile": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", - "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==", - "dev": true, - "license": "MIT", - "optionalDependencies": { - "graceful-fs": "^4.1.6" - } - }, "node_modules/jsx-ast-utils": { "version": "3.3.5", "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.3.5.tgz", @@ -15861,16 +13971,6 @@ "node": ">=0.10.0" } }, - "node_modules/kleur": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", - "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, "node_modules/known-css-properties": { "version": "0.36.0", "resolved": "https://registry.npmjs.org/known-css-properties/-/known-css-properties-0.36.0.tgz", @@ -15909,13 +14009,6 @@ "shell-quote": "^1.8.1" } }, - "node_modules/lazy-val": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/lazy-val/-/lazy-val-1.0.5.tgz", - "integrity": "sha512-0/BnGCCfyUMkBpeDgWihanIAF9JmZhHBgUhEqzvf+adhNGLoP6TaiI5oF8oyb3I45P+PcnrqihSf01M0l0G5+Q==", - "dev": true, - "license": "MIT" - }, "node_modules/leven": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", @@ -15961,9 +14054,9 @@ "license": "MIT" }, "node_modules/lint-staged": { - "version": "16.1.0", - "resolved": "https://registry.npmjs.org/lint-staged/-/lint-staged-16.1.0.tgz", - "integrity": "sha512-HkpQh69XHxgCjObjejBT3s2ILwNjFx8M3nw+tJ/ssBauDlIpkx2RpqWSi1fBgkXLSSXnbR3iEq1NkVtpvV+FLQ==", + "version": "16.1.2", + "resolved": "https://registry.npmjs.org/lint-staged/-/lint-staged-16.1.2.tgz", + "integrity": "sha512-sQKw2Si2g9KUZNY3XNvRuDq4UJqpHwF0/FQzZR2M7I5MvtpWvibikCjUVJzZdGE0ByurEl3KQNvsGetd1ty1/Q==", "dev": true, "license": "MIT", "dependencies": { @@ -16042,6 +14135,78 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, + "node_modules/listr2/node_modules/cli-truncate": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-4.0.0.tgz", + "integrity": "sha512-nPdaFdQ0h/GEigbPClz11D0v/ZJEwxmeVZGeMo3Z5StPtUTkA9o1lD6QwoirYiSDzbcwn2XcjwmCp68W1IS4TA==", + "dev": true, + "license": "MIT", + "dependencies": { + "slice-ansi": "^5.0.0", + "string-width": "^7.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/listr2/node_modules/emoji-regex": { + "version": "10.4.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.4.0.tgz", + "integrity": "sha512-EC+0oUMY1Rqm4O6LLrgjtYDvcVYTy7chDnM4Q7030tP4Kwj3u/pR6gP9ygnp2CJMK5Gq+9Q2oqmrFJAz01DXjw==", + "dev": true, + "license": "MIT" + }, + "node_modules/listr2/node_modules/is-fullwidth-code-point": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-4.0.0.tgz", + "integrity": "sha512-O4L094N2/dZ7xqVdrXhh9r1KODPJpFms8B5sGdJLPy664AgvXsreZUyCQQNItZRDlYug4xStLjNp/sz3HvBowQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/listr2/node_modules/slice-ansi": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-5.0.0.tgz", + "integrity": "sha512-FC+lgizVPfie0kkhqUScwRu1O/lF6NOgJmlCgK+/LYxDCTk8sGelYaHDhFcDN+Sn3Cv+3VSa4Byeo+IMCzpMgQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^6.0.0", + "is-fullwidth-code-point": "^4.0.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/slice-ansi?sponsor=1" + } + }, + "node_modules/listr2/node_modules/string-width": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-7.2.0.tgz", + "integrity": "sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "emoji-regex": "^10.3.0", + "get-east-asian-width": "^1.0.0", + "strip-ansi": "^7.1.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/listr2/node_modules/wrap-ansi": { "version": "9.0.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-9.0.0.tgz", @@ -16117,28 +14282,6 @@ "dev": true, "license": "MIT" }, - "node_modules/lodash.difference": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.difference/-/lodash.difference-4.5.0.tgz", - "integrity": "sha512-dS2j+W26TQ7taQBGN8Lbbq04ssV3emRw4NY58WErlTO29pIqS0HmoT5aJ9+TUQ1N3G+JOZSji4eugsWwGp9yPA==", - "dev": true, - "license": "MIT" - }, - "node_modules/lodash.escaperegexp": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/lodash.escaperegexp/-/lodash.escaperegexp-4.1.2.tgz", - "integrity": "sha512-TM9YBvyC84ZxE3rgfefxUWiQKLilstD6k7PTGt6wfbtXF8ixIJLOL3VYyV/z+ZiPLsVxAsKAFVwWlWeb2Y8Yyw==", - "dev": true, - "license": "MIT" - }, - "node_modules/lodash.isequal": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.isequal/-/lodash.isequal-4.5.0.tgz", - "integrity": "sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ==", - "deprecated": "This package is deprecated. Use require('node:util').isDeepStrictEqual instead.", - "dev": true, - "license": "MIT" - }, "node_modules/lodash.merge": { "version": "4.6.2", "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", @@ -16153,23 +14296,6 @@ "dev": true, "license": "MIT" }, - "node_modules/log-symbols": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", - "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", - "dev": true, - "license": "MIT", - "dependencies": { - "chalk": "^4.1.0", - "is-unicode-supported": "^0.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/log-update": { "version": "6.1.0", "resolved": "https://registry.npmjs.org/log-update/-/log-update-6.1.0.tgz", @@ -16219,6 +14345,13 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, + "node_modules/log-update/node_modules/emoji-regex": { + "version": "10.4.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.4.0.tgz", + "integrity": "sha512-EC+0oUMY1Rqm4O6LLrgjtYDvcVYTy7chDnM4Q7030tP4Kwj3u/pR6gP9ygnp2CJMK5Gq+9Q2oqmrFJAz01DXjw==", + "dev": true, + "license": "MIT" + }, "node_modules/log-update/node_modules/is-fullwidth-code-point": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-5.0.0.tgz", @@ -16252,6 +14385,24 @@ "url": "https://github.com/chalk/slice-ansi?sponsor=1" } }, + "node_modules/log-update/node_modules/string-width": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-7.2.0.tgz", + "integrity": "sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "emoji-regex": "^10.3.0", + "get-east-asian-width": "^1.0.0", + "strip-ansi": "^7.1.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/log-update/node_modules/wrap-ansi": { "version": "9.0.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-9.0.0.tgz", @@ -16293,16 +14444,6 @@ "tslib": "^2.0.3" } }, - "node_modules/lowercase-keys": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz", - "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, "node_modules/lowlight": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/lowlight/-/lowlight-3.3.0.tgz", @@ -16462,20 +14603,6 @@ "tmpl": "1.0.5" } }, - "node_modules/matcher": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/matcher/-/matcher-3.0.0.tgz", - "integrity": "sha512-OkeDaAZ/bQCxeFAozM55PKcKU0yJMPGifLwV4Qgjitu+5MoAfSQN4lsLJeXZ1b8w0x+/Emda6MZgXS1jvsapng==", - "dev": true, - "license": "MIT", - "optional": true, - "dependencies": { - "escape-string-regexp": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/math-intrinsics": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz", @@ -16630,16 +14757,16 @@ } }, "node_modules/mime": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-2.6.0.tgz", - "integrity": "sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==", + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", "dev": true, "license": "MIT", "bin": { "mime": "cli.js" }, "engines": { - "node": ">=4.0.0" + "node": ">=4" } }, "node_modules/mime-db": { @@ -16698,16 +14825,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/mimic-response": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz", - "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, "node_modules/min-indent": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz", @@ -16747,13 +14864,13 @@ "license": "ISC" }, "node_modules/minimatch": { - "version": "10.0.1", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.0.1.tgz", - "integrity": "sha512-ethXTt3SGGR+95gudmqJ1eNhRO7eGEGIgYA9vnPatK4/etz2MEVDno5GMCibdMTuBMyElzIlgxMna3K94XDIDQ==", + "version": "10.0.3", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.0.3.tgz", + "integrity": "sha512-IPZ167aShDZZUMdRk66cyQAW3qr0WzbHkPdMYa8bzZhlHhO3jALbKdxcaak7W9FfT2rZNpQuUu4Od7ILEpXSaw==", "dev": true, "license": "ISC", "dependencies": { - "brace-expansion": "^2.0.1" + "@isaacs/brace-expansion": "^5.0.0" }, "engines": { "node": "20 || >=22" @@ -17026,9 +15143,9 @@ } }, "node_modules/music-metadata": { - "version": "11.2.3", - "resolved": "https://registry.npmjs.org/music-metadata/-/music-metadata-11.2.3.tgz", - "integrity": "sha512-ReVxFoO12kaRiaNmqxkAdytul1Ntl2ersdIyw/CqWPysvOFpUrr19s8uOHEA4xjK69ETmpP71KezXWEE7r5Myg==", + "version": "11.3.0", + "resolved": "https://registry.npmjs.org/music-metadata/-/music-metadata-11.3.0.tgz", + "integrity": "sha512-Qmv8KY+o68MMcYW0zq+cqEvtVnw+9+GAeF0t9DPcSl4hTkh6v6hmaqRpZ5onYpTywPxdtE4hrkwHNqkMwwOv5A==", "funding": [ { "type": "github", @@ -17044,9 +15161,9 @@ "@tokenizer/token": "^0.3.0", "content-type": "^1.0.5", "debug": "^4.4.1", - "file-type": "^20.5.0", + "file-type": "^21.0.0", "media-typer": "^1.1.0", - "strtok3": "^10.2.2", + "strtok3": "^10.3.1", "token-types": "^6.0.0", "uint8array-extras": "^1.4.0" }, @@ -17093,6 +15210,22 @@ "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" } }, + "node_modules/napi-postinstall": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/napi-postinstall/-/napi-postinstall-0.2.4.tgz", + "integrity": "sha512-ZEzHJwBhZ8qQSbknHqYcdtQVr8zUgGyM/q6h6qAyhtyVMNrSgDhrC4disf03dYW0e+czXyLnZINnCTEkWy0eJg==", + "dev": true, + "license": "MIT", + "bin": { + "napi-postinstall": "lib/cli.js" + }, + "engines": { + "node": "^12.20.0 || ^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/napi-postinstall" + } + }, "node_modules/natural-compare": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", @@ -17101,9 +15234,9 @@ "license": "MIT" }, "node_modules/negotiator": { - "version": "0.6.4", - "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.4.tgz", - "integrity": "sha512-myRT3DiWPHqho5PrJaIRyaMv2kgYf0mUVgBNOYMuCH5Ki1yEiQaf/ZJuQ62nvpc44wL5WDbTX7yGJi1Neevw8w==", + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", + "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", "dev": true, "license": "MIT", "engines": { @@ -17128,64 +15261,12 @@ "tslib": "^2.0.3" } }, - "node_modules/node-abi": { - "version": "3.75.0", - "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-3.75.0.tgz", - "integrity": "sha512-OhYaY5sDsIka7H7AtijtI9jwGYLyl29eQn/W623DiN/MIv5sUqc4g7BIDThX+gb7di9f6xK02nkp8sdfFWZLTg==", - "dev": true, - "license": "MIT", - "dependencies": { - "semver": "^7.3.5" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/node-abi/node_modules/semver": { - "version": "7.7.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz", - "integrity": "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==", - "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/node-addon-api": { - "version": "8.3.1", - "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-8.3.1.tgz", - "integrity": "sha512-lytcDEdxKjGJPTLEfW4mYMigRezMlyJY8W4wxJK8zE533Jlb8L8dRuObJFWg2P+AuOIxoCgKF+2Oq4d4Zd0OUA==", - "dev": true, + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-1.7.2.tgz", + "integrity": "sha512-ibPK3iA+vaY1eEjESkQkM0BbCqFOaZMiXRTtdB0u7b4djtY6JnsjvPdUHVMg6xQt3B8fpTTWHI9A+ADjM9frzg==", "license": "MIT", - "engines": { - "node": "^18 || ^20 || >= 21" - } - }, - "node_modules/node-api-version": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/node-api-version/-/node-api-version-0.2.1.tgz", - "integrity": "sha512-2xP/IGGMmmSQpI1+O/k72jF/ykvZ89JeuKX3TLJAYPDVLUalrshrLHkeVcCCZqG/eEa635cr8IBYzgnDvM2O8Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "semver": "^7.3.5" - } - }, - "node_modules/node-api-version/node_modules/semver": { - "version": "7.7.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz", - "integrity": "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==", - "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } + "optional": true }, "node_modules/node-forge": { "version": "1.3.1", @@ -17223,17 +15304,6 @@ "node": "^12.13 || ^14.13 || >=16" } }, - "node_modules/node-gyp/node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, "node_modules/node-gyp/node_modules/glob": { "version": "7.2.3", "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", @@ -17332,19 +15402,6 @@ "node": ">=0.10.0" } }, - "node_modules/normalize-url": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-6.1.0.tgz", - "integrity": "sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/npm-run-path": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", @@ -17615,87 +15672,6 @@ "resolved": "git+ssh://git@github.com/Ajaxy/opus-recorder.git#116830a94120baad5ac60ac060c2ecd032b6107b", "license": "MIT" }, - "node_modules/ora": { - "version": "5.4.1", - "resolved": "https://registry.npmjs.org/ora/-/ora-5.4.1.tgz", - "integrity": "sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "bl": "^4.1.0", - "chalk": "^4.1.0", - "cli-cursor": "^3.1.0", - "cli-spinners": "^2.5.0", - "is-interactive": "^1.0.0", - "is-unicode-supported": "^0.1.0", - "log-symbols": "^4.1.0", - "strip-ansi": "^6.0.0", - "wcwidth": "^1.0.1" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/ora/node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/ora/node_modules/cli-cursor": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", - "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", - "dev": true, - "license": "MIT", - "dependencies": { - "restore-cursor": "^3.1.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/ora/node_modules/restore-cursor": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", - "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", - "dev": true, - "license": "MIT", - "dependencies": { - "onetime": "^5.1.0", - "signal-exit": "^3.0.2" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/ora/node_modules/signal-exit": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", - "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", - "dev": true, - "license": "ISC" - }, - "node_modules/ora/node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/os-browserify": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz", @@ -17720,16 +15696,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/p-cancelable": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-2.1.1.tgz", - "integrity": "sha512-BZOr3nRQHOntUjTrH8+Lh54smKHoHyur8We1V8DSMVrl5A2malOOwuJRnKRDjSnkoeBh4at6BwEnb5I7Jl31wg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, "node_modules/p-limit": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", @@ -18000,41 +15966,6 @@ "node": ">=8" } }, - "node_modules/pe-library": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/pe-library/-/pe-library-0.4.1.tgz", - "integrity": "sha512-eRWB5LBz7PpDu4PUlwT0PhnQfTQJlDDdPa35urV4Osrm0t0AqQFGn+UIkU3klZvwJ8KPO3VbBFsXquA6p6kqZw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12", - "npm": ">=6" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/jet2jet" - } - }, - "node_modules/peek-readable": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/peek-readable/-/peek-readable-7.0.0.tgz", - "integrity": "sha512-nri2TO5JE3/mRryik9LlHFT53cgHfRK0Lt0BAZQXku/AW3E6XLt2GaY8siWi7dvW/m1z0ecn+J+bpDa9ZN3IsQ==", - "license": "MIT", - "engines": { - "node": ">=18" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/Borewit" - } - }, - "node_modules/pend": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", - "integrity": "sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==", - "dev": true, - "license": "MIT" - }, "node_modules/picocolors": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", @@ -18168,13 +16099,13 @@ } }, "node_modules/playwright": { - "version": "1.52.0", - "resolved": "https://registry.npmjs.org/playwright/-/playwright-1.52.0.tgz", - "integrity": "sha512-JAwMNMBlxJ2oD1kce4KPtMkDeKGHQstdpFPcPH3maElAXon/QZeTvtsfXmTMRyO9TslfoYOXkSsvao2nE1ilTw==", + "version": "1.53.0", + "resolved": "https://registry.npmjs.org/playwright/-/playwright-1.53.0.tgz", + "integrity": "sha512-ghGNnIEYZC4E+YtclRn4/p6oYbdPiASELBIYkBXfaTVKreQUYbMUYQDwS12a8F0/HtIjr/CkGjtwABeFPGcS4Q==", "dev": true, "license": "Apache-2.0", "dependencies": { - "playwright-core": "1.52.0" + "playwright-core": "1.53.0" }, "bin": { "playwright": "cli.js" @@ -18187,9 +16118,9 @@ } }, "node_modules/playwright-core": { - "version": "1.52.0", - "resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.52.0.tgz", - "integrity": "sha512-l2osTgLXSMeuLZOML9qYODUQoPPnUsKsb5/P6LJ2e6uPKXUdPK5WYhN4z03G+YNbWmGDY4YENauNu4ZKczreHg==", + "version": "1.53.0", + "resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.53.0.tgz", + "integrity": "sha512-mGLg8m0pm4+mmtB7M89Xw/GSqoNC+twivl8ITteqvAndachozYe2ZA7srU6uleV1vEdAHYqjq+SV8SNxRRFYBw==", "dev": true, "license": "Apache-2.0", "bin": { @@ -18218,8 +16149,8 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/plist/-/plist-3.1.0.tgz", "integrity": "sha512-uysumyrvkUX0rX/dEVqt8gC3sTBzd4zoWfLeS29nb53imdaXVvLINYXTI2GNqzaMuvacNx4uJQ8+b3zXR0pkgQ==", - "devOptional": true, "license": "MIT", + "optional": true, "dependencies": { "@xmldom/xmldom": "^0.8.8", "base64-js": "^1.5.1", @@ -18240,9 +16171,9 @@ } }, "node_modules/postcss": { - "version": "8.5.4", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.4.tgz", - "integrity": "sha512-QSa9EBe+uwlGTFmHsPKokv3B/oEMQZxfqW0QqNCyhpa6mB1afzulwn8hihglqAb2pOw+BJgNlmXQ8la2VeHB7w==", + "version": "8.5.6", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.6.tgz", + "integrity": "sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==", "dev": true, "funding": [ { @@ -18523,36 +16454,6 @@ "dev": true, "license": "MIT" }, - "node_modules/postject": { - "version": "1.0.0-alpha.6", - "resolved": "https://registry.npmjs.org/postject/-/postject-1.0.0-alpha.6.tgz", - "integrity": "sha512-b9Eb8h2eVqNE8edvKdwqkrY6O7kAwmI8kcnBv1NScolYJbo59XUF0noFq+lxbC1yN20bmC0WBEbDC5H/7ASb0A==", - "dev": true, - "license": "MIT", - "optional": true, - "peer": true, - "dependencies": { - "commander": "^9.4.0" - }, - "bin": { - "postject": "dist/cli.js" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/postject/node_modules/commander": { - "version": "9.5.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-9.5.0.tgz", - "integrity": "sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ==", - "dev": true, - "license": "MIT", - "optional": true, - "peer": true, - "engines": { - "node": "^12.20.0 || >=14" - } - }, "node_modules/prelude-ls": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", @@ -18575,18 +16476,18 @@ } }, "node_modules/pretty-format": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", - "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", + "version": "30.0.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-30.0.0.tgz", + "integrity": "sha512-18NAOUr4ZOQiIR+BgI5NhQE7uREdx4ZyV0dyay5izh4yfQ+1T7BSvggxvRGoXocrRyevqW5OhScUjbi9GB8R8Q==", "dev": true, "license": "MIT", "dependencies": { - "@jest/schemas": "^29.6.3", - "ansi-styles": "^5.0.0", - "react-is": "^18.0.0" + "@jest/schemas": "30.0.0", + "ansi-styles": "^5.2.0", + "react-is": "^18.3.1" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, "node_modules/pretty-format/node_modules/ansi-styles": { @@ -18602,16 +16503,6 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/proc-log": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/proc-log/-/proc-log-2.0.1.tgz", - "integrity": "sha512-Kcmo2FhfDTXdcbfDH76N7uBYHINxc/8GW7UAVuVP9I+Va3uHSerrnKV6dLooga/gh7GlgzuCCr/eoldnL1muGw==", - "dev": true, - "license": "ISC", - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } - }, "node_modules/process-nextick-args": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", @@ -18619,16 +16510,6 @@ "dev": true, "license": "MIT" }, - "node_modules/progress": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", - "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.4.0" - } - }, "node_modules/promise-inflight": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz", @@ -18650,20 +16531,6 @@ "node": ">=10" } }, - "node_modules/prompts": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz", - "integrity": "sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "kleur": "^3.0.3", - "sisteransi": "^1.0.5" - }, - "engines": { - "node": ">= 6" - } - }, "node_modules/prop-types": { "version": "15.8.1", "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", @@ -18707,30 +16574,6 @@ "node": ">= 0.10" } }, - "node_modules/psl": { - "version": "1.15.0", - "resolved": "https://registry.npmjs.org/psl/-/psl-1.15.0.tgz", - "integrity": "sha512-JZd3gMVBAVQkSs6HdNZo9Sdo0LNcQeMNP3CozBJb3JYC/QUYZTnKxP+f8oWRX4rHP5EurWxqAHTSwUCjlNKa1w==", - "dev": true, - "license": "MIT", - "dependencies": { - "punycode": "^2.3.1" - }, - "funding": { - "url": "https://github.com/sponsors/lupomontero" - } - }, - "node_modules/pump": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.2.tgz", - "integrity": "sha512-tUPXtzlGM8FE3P0ZL6DVs/3P58k9nk8/jZeQCurTJylQA8qFYzHFfhBJkuqyE0FifOsQ0uKWekiZ5g8wtr28cw==", - "dev": true, - "license": "MIT", - "dependencies": { - "end-of-stream": "^1.1.0", - "once": "^1.3.1" - } - }, "node_modules/punycode": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", @@ -18741,26 +16584,10 @@ "node": ">=6" } }, - "node_modules/pupa": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/pupa/-/pupa-3.1.0.tgz", - "integrity": "sha512-FLpr4flz5xZTSJxSeaheeMKN/EDzMdK7b8PTOC6a5PYFKTucWbdqjgqaEyH0shFiSJrVB1+Qqi4Tk19ccU6Aug==", - "dev": true, - "license": "MIT", - "dependencies": { - "escape-goat": "^4.0.0" - }, - "engines": { - "node": ">=12.20" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/pure-rand": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/pure-rand/-/pure-rand-6.1.0.tgz", - "integrity": "sha512-bVWawvoZoBYpp6yIoQtQXHZjmz35RSVHnUOTefl8Vcjr8snTPY1wnpSPMWekcFwbxI6gtmT7rSYPFvz71ldiOA==", + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/pure-rand/-/pure-rand-7.0.1.tgz", + "integrity": "sha512-oTUZM/NAZS8p7ANR3SHh30kXB+zK2r2BPcEn/awJIbOvq82WoMN4p62AWWp3Hhw50G0xMsw1mhIBLqHw64EcNQ==", "dev": true, "funding": [ { @@ -18787,9 +16614,9 @@ } }, "node_modules/qrcode-generator": { - "version": "1.4.4", - "resolved": "https://registry.npmjs.org/qrcode-generator/-/qrcode-generator-1.4.4.tgz", - "integrity": "sha512-HM7yY8O2ilqhmULxGMpcHSF1EhJJ9yBj8gvDEuZ6M+KGJ0YY2hKpnXvRD+hZPLrDVck3ExIGhmPtSdcjC+guuw==", + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/qrcode-generator/-/qrcode-generator-1.5.0.tgz", + "integrity": "sha512-sqo7otiDq5rA4djRkFI7IjLQqxRrLpIou0d3rqr03JJLUGf5raPh91xCio+lFFbQf0SlcVckStz0EmDEX3EeZA==", "license": "MIT" }, "node_modules/qs": { @@ -18808,13 +16635,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/querystringify": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz", - "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==", - "dev": true, - "license": "MIT" - }, "node_modules/queue-microtask": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", @@ -18836,19 +16656,6 @@ ], "license": "MIT" }, - "node_modules/quick-lru": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-5.1.1.tgz", - "integrity": "sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/randombytes": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", @@ -18957,19 +16764,6 @@ "dev": true, "license": "MIT" }, - "node_modules/read-binary-file-arch": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/read-binary-file-arch/-/read-binary-file-arch-1.0.6.tgz", - "integrity": "sha512-BNg9EN3DD3GsDXX7Aa8O4p92sryjkmzYYgmgTAc6CA4uGLEDzFfxOxugu21akOxpcXHiEgsYkC6nPsQvLLLmEg==", - "dev": true, - "license": "MIT", - "dependencies": { - "debug": "^4.3.4" - }, - "bin": { - "read-binary-file-arch": "cli.js" - } - }, "node_modules/readable-stream": { "version": "3.6.2", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", @@ -19176,13 +16970,6 @@ "node": ">= 0.10" } }, - "node_modules/remove-trailing-separator": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", - "integrity": "sha512-/hS+Y0u3aOfIETiaiirUFwDBDzmXPvO+jAfKTitUngIPzdKc6Z0LoFjM/CK5PL4C+eKwHohlHAb6H0VFfmmUsw==", - "dev": true, - "license": "ISC" - }, "node_modules/renderkid": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/renderkid/-/renderkid-3.0.0.tgz", @@ -19257,24 +17044,6 @@ "dev": true, "license": "MIT" }, - "node_modules/resedit": { - "version": "1.7.2", - "resolved": "https://registry.npmjs.org/resedit/-/resedit-1.7.2.tgz", - "integrity": "sha512-vHjcY2MlAITJhC0eRD/Vv8Vlgmu9Sd3LX9zZvtGzU5ZImdTN3+d6e/4mnTyV8vEbyf1sgNIrWxhWlrys52OkEA==", - "dev": true, - "license": "MIT", - "dependencies": { - "pe-library": "^0.4.1" - }, - "engines": { - "node": ">=12", - "npm": ">=6" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/jet2jet" - } - }, "node_modules/resolve": { "version": "1.22.10", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.10.tgz", @@ -19296,13 +17065,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/resolve-alpn": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/resolve-alpn/-/resolve-alpn-1.2.1.tgz", - "integrity": "sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g==", - "dev": true, - "license": "MIT" - }, "node_modules/resolve-cwd": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", @@ -19346,29 +17108,6 @@ "url": "https://github.com/privatenumber/resolve-pkg-maps?sponsor=1" } }, - "node_modules/resolve.exports": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/resolve.exports/-/resolve.exports-2.0.3.tgz", - "integrity": "sha512-OcXjMsGdhL4XnbShKpAcSqPMzQoYkYyhbEaeSko47MjRP9NfEQMhZkXL1DoFlt9LWQn4YttrdnV6X2OiyzBi+A==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - } - }, - "node_modules/responselike": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/responselike/-/responselike-2.0.1.tgz", - "integrity": "sha512-4gl03wn3hj1HP3yzgdI7d3lCkF95F21Pz4BPGvKHinyQzALR5CapwC8yIi0Rh58DEMQ/SguC03wFj2k0M/mHhw==", - "dev": true, - "license": "MIT", - "dependencies": { - "lowercase-keys": "^2.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/restore-cursor": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-5.1.0.tgz", @@ -19447,17 +17186,6 @@ "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/rimraf/node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, "node_modules/rimraf/node_modules/glob": { "version": "7.2.3", "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", @@ -19493,24 +17221,12 @@ "node": "*" } }, - "node_modules/roarr": { - "version": "2.15.4", - "resolved": "https://registry.npmjs.org/roarr/-/roarr-2.15.4.tgz", - "integrity": "sha512-CHhPh+UNHD2GTXNYhPWLnU8ONHdI+5DI+4EYIAOaiD63rHeYlZvyh8P+in5999TTSFgUYuKUAjzRI4mdh/p+2A==", + "node_modules/rrweb-cssom": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/rrweb-cssom/-/rrweb-cssom-0.8.0.tgz", + "integrity": "sha512-guoltQEx+9aMf2gDZ0s62EcV8lsXR+0w8915TC3ITdn2YueuNjdAYh/levpU9nFaoChh9RUS5ZdQMrKfVEN9tw==", "dev": true, - "license": "BSD-3-Clause", - "optional": true, - "dependencies": { - "boolean": "^3.0.1", - "detect-node": "^2.0.4", - "globalthis": "^1.0.1", - "json-stringify-safe": "^5.0.1", - "semver-compare": "^1.0.0", - "sprintf-js": "^1.1.2" - }, - "engines": { - "node": ">=8.0" - } + "license": "MIT" }, "node_modules/run-applescript": { "version": "7.0.0", @@ -19549,16 +17265,6 @@ "queue-microtask": "^1.2.2" } }, - "node_modules/runtime-required": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/runtime-required/-/runtime-required-1.1.0.tgz", - "integrity": "sha512-yX97f5E0WfNpcQnfVjap6vzQcvErkYYCx6eTK4siqGEdC8lglwypUFgZVTX7ShvIlgfkC4XGFl9O1KTYcff0pw==", - "dev": true, - "license": "ISC", - "engines": { - "node": ">=4.0.0" - } - }, "node_modules/rxjs": { "version": "7.8.2", "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.2.tgz", @@ -19652,20 +17358,10 @@ "dev": true, "license": "MIT" }, - "node_modules/sanitize-filename": { - "version": "1.6.3", - "resolved": "https://registry.npmjs.org/sanitize-filename/-/sanitize-filename-1.6.3.tgz", - "integrity": "sha512-y/52Mcy7aw3gRm7IrcGDFx/bCk4AhRh2eI9luHOQM86nZsqwiRkkq2GekHXBBD+SmPidc8i2PqtYZl+pWJ8Oeg==", - "dev": true, - "license": "WTFPL OR ISC", - "dependencies": { - "truncate-utf8-bytes": "^1.0.0" - } - }, "node_modules/sass": { - "version": "1.89.1", - "resolved": "https://registry.npmjs.org/sass/-/sass-1.89.1.tgz", - "integrity": "sha512-eMLLkl+qz7tx/0cJ9wI+w09GQ2zodTkcE/aVfywwdlRcI3EO19xGnbmJwg/JMIm+5MxVJ6outddLZ4Von4E++Q==", + "version": "1.89.2", + "resolved": "https://registry.npmjs.org/sass/-/sass-1.89.2.tgz", + "integrity": "sha512-xCmtksBKd/jdJ9Bt9p7nPKiuqrlBMBuuGkQlkhZjjQk3Ty48lv93k5Dq6OPkKt4XwxDJ7tvlfrTa1MPA9bf+QA==", "dev": true, "license": "MIT", "dependencies": { @@ -19842,14 +17538,6 @@ "semver": "bin/semver.js" } }, - "node_modules/semver-compare": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/semver-compare/-/semver-compare-1.0.0.tgz", - "integrity": "sha512-YM3/ITh2MJ5MtzaM429anh+x2jiLVjqILF4m4oyQB18W7Ggea7BfqdH/wGMK7dDiMghv/6WG7znWMwUDzJiXow==", - "dev": true, - "license": "MIT", - "optional": true - }, "node_modules/send": { "version": "0.19.0", "resolved": "https://registry.npmjs.org/send/-/send-0.19.0.tgz", @@ -19902,19 +17590,6 @@ "node": ">= 0.8" } }, - "node_modules/send/node_modules/mime": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", - "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", - "dev": true, - "license": "MIT", - "bin": { - "mime": "cli.js" - }, - "engines": { - "node": ">=4" - } - }, "node_modules/send/node_modules/range-parser": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", @@ -19925,37 +17600,6 @@ "node": ">= 0.6" } }, - "node_modules/serialize-error": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/serialize-error/-/serialize-error-7.0.1.tgz", - "integrity": "sha512-8I8TjW5KMOKsZQTvoxjuSIa7foAwPWGOts+6o7sgjz41/qMD9VQHEDxi6PBvK2l0MXUmqZyNpUK+T2tQaaElvw==", - "dev": true, - "license": "MIT", - "optional": true, - "dependencies": { - "type-fest": "^0.13.1" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/serialize-error/node_modules/type-fest": { - "version": "0.13.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.13.1.tgz", - "integrity": "sha512-34R7HTnG0XIJcBSn5XhDd7nNFPRcXYRZrBB2O2jdKqYODldSzBAqzsWoZYYvduky73toYS/ESqxPvkDf/F0XMg==", - "dev": true, - "license": "(MIT OR CC0-1.0)", - "optional": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/serialize-javascript": { "version": "6.0.2", "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.2.tgz", @@ -20008,17 +17652,6 @@ "range-parser": "1.2.0" } }, - "node_modules/serve-handler/node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, "node_modules/serve-handler/node_modules/mime-db": { "version": "1.33.0", "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.33.0.tgz", @@ -20395,39 +18028,6 @@ "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/simple-update-notifier": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/simple-update-notifier/-/simple-update-notifier-2.0.0.tgz", - "integrity": "sha512-a2B9Y0KlNXl9u/vsW6sTIu9vGEpfKu2wRV6l1H3XEas/0gUIzGzBoP/IouTcUQbm9JWZLH3COxyn03TYlFax6w==", - "dev": true, - "license": "MIT", - "dependencies": { - "semver": "^7.5.3" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/simple-update-notifier/node_modules/semver": { - "version": "7.7.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz", - "integrity": "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==", - "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/sisteransi": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", - "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==", - "dev": true, - "license": "MIT" - }, "node_modules/slash": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", @@ -20439,33 +18039,18 @@ } }, "node_modules/slice-ansi": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-5.0.0.tgz", - "integrity": "sha512-FC+lgizVPfie0kkhqUScwRu1O/lF6NOgJmlCgK+/LYxDCTk8sGelYaHDhFcDN+Sn3Cv+3VSa4Byeo+IMCzpMgQ==", - "dev": true, + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-3.0.0.tgz", + "integrity": "sha512-pSyv7bSTC7ig9Dcgbw9AuRNUb5k5V6oDudjZoMBSr13qpLBG7tB+zgCkARjq7xIUgdz5P1Qe8u+rSGdouOOIyQ==", "license": "MIT", + "optional": true, "dependencies": { - "ansi-styles": "^6.0.0", - "is-fullwidth-code-point": "^4.0.0" + "ansi-styles": "^4.0.0", + "astral-regex": "^2.0.0", + "is-fullwidth-code-point": "^3.0.0" }, "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/slice-ansi?sponsor=1" - } - }, - "node_modules/slice-ansi/node_modules/ansi-styles": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", - "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "node": ">=8" } }, "node_modules/slugify": { @@ -20502,9 +18087,9 @@ } }, "node_modules/socks": { - "version": "2.8.4", - "resolved": "https://registry.npmjs.org/socks/-/socks-2.8.4.tgz", - "integrity": "sha512-D3YaD0aRxR3mEcqnidIs7ReYJFVzWdd6fXJYUM8ixcQcJRGTka/b3saV0KflYhyVJXKhb947GndU35SxYNResQ==", + "version": "2.8.5", + "resolved": "https://registry.npmjs.org/socks/-/socks-2.8.5.tgz", + "integrity": "sha512-iF+tNDQla22geJdTyJB1wM/qrX9DMRwWrciEPwWLPRWAUEM8sQiyxgckLxWT1f7+9VabJS0jTGGr4QgBuvi6Ww==", "dev": true, "license": "MIT", "dependencies": { @@ -20544,32 +18129,6 @@ "node": ">= 6.0.0" } }, - "node_modules/sort-keys": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/sort-keys/-/sort-keys-1.1.2.tgz", - "integrity": "sha512-vzn8aSqKgytVik0iwdBEi+zevbTYZogewTUM6dtpmGwEcdzbub/TX4bCzRhebDCRC3QzXgJsLRKB2V/Oof7HXg==", - "dev": true, - "license": "MIT", - "dependencies": { - "is-plain-obj": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/sort-keys-length": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/sort-keys-length/-/sort-keys-length-1.0.1.tgz", - "integrity": "sha512-GRbEOUqCxemTAk/b32F2xa8wDTs+Z1QHOkbhJDQTvv/6G3ZkbJ+frYWsTcc7cBB3Fu4wy4XlLCuNtJuMn7Gsvw==", - "dev": true, - "license": "MIT", - "dependencies": { - "sort-keys": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/source-map": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", @@ -20696,16 +18255,6 @@ "node": ">=8" } }, - "node_modules/stat-mode": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/stat-mode/-/stat-mode-1.0.0.tgz", - "integrity": "sha512-jH9EhtKIjuXZ2cWxmXS8ZP80XyC3iasQxMDV8jzhNJpfDb7VbQLVW4Wvsxz9QZvzV+G4YoSfBUVKDOyxLzi/sg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 6" - } - }, "node_modules/statuses": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", @@ -20802,21 +18351,18 @@ "license": "MIT" }, "node_modules/string-width": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-7.2.0.tgz", - "integrity": "sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==", - "dev": true, + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "devOptional": true, "license": "MIT", "dependencies": { - "emoji-regex": "^10.3.0", - "get-east-asian-width": "^1.0.0", - "strip-ansi": "^7.1.0" + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" }, "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=8" } }, "node_modules/string-width-cjs": { @@ -20852,16 +18398,6 @@ "dev": true, "license": "MIT" }, - "node_modules/string-width-cjs/node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, "node_modules/string-width-cjs/node_modules/strip-ansi": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", @@ -20875,13 +18411,36 @@ "node": ">=8" } }, + "node_modules/string-width/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "devOptional": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, "node_modules/string-width/node_modules/emoji-regex": { - "version": "10.4.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.4.0.tgz", - "integrity": "sha512-EC+0oUMY1Rqm4O6LLrgjtYDvcVYTy7chDnM4Q7030tP4Kwj3u/pR6gP9ygnp2CJMK5Gq+9Q2oqmrFJAz01DXjw==", - "dev": true, + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "devOptional": true, "license": "MIT" }, + "node_modules/string-width/node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "devOptional": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/string.prototype.includes": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/string.prototype.includes/-/string.prototype.includes-2.0.1.tgz", @@ -21082,13 +18641,12 @@ } }, "node_modules/strtok3": { - "version": "10.2.2", - "resolved": "https://registry.npmjs.org/strtok3/-/strtok3-10.2.2.tgz", - "integrity": "sha512-Xt18+h4s7Z8xyZ0tmBoRmzxcop97R4BAh+dXouUDCYn+Em+1P3qpkUfI5ueWLT8ynC5hZ+q4iPEmGG1urvQGBg==", + "version": "10.3.1", + "resolved": "https://registry.npmjs.org/strtok3/-/strtok3-10.3.1.tgz", + "integrity": "sha512-3JWEZM6mfix/GCJBBUrkA8p2Id2pBkyTkVCJKto55w080QBKZ+8R171fGrbiSp+yMO/u6F8/yUh7K4V9K+YCnw==", "license": "MIT", "dependencies": { - "@tokenizer/token": "^0.3.0", - "peek-readable": "^7.0.0" + "@tokenizer/token": "^0.3.0" }, "engines": { "node": ">=18" @@ -21283,9 +18841,9 @@ } }, "node_modules/stylelint-scss": { - "version": "6.12.0", - "resolved": "https://registry.npmjs.org/stylelint-scss/-/stylelint-scss-6.12.0.tgz", - "integrity": "sha512-U7CKhi1YNkM1pXUXl/GMUXi8xKdhl4Ayxdyceie1nZ1XNIdaUgMV6OArpooWcDzEggwgYD0HP/xIgVJo9a655w==", + "version": "6.12.1", + "resolved": "https://registry.npmjs.org/stylelint-scss/-/stylelint-scss-6.12.1.tgz", + "integrity": "sha512-UJUfBFIvXfly8WKIgmqfmkGKPilKB4L5j38JfsDd+OCg2GBdU0vGUV08Uw82tsRZzd4TbsUURVVNGeOhJVF7pA==", "dev": true, "license": "MIT", "dependencies": { @@ -21390,60 +18948,26 @@ "postcss-selector-parser": "^7.0.0" } }, - "node_modules/stylelint/node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/stylelint/node_modules/balanced-match": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-2.0.0.tgz", - "integrity": "sha512-1ugUSr8BHXRnK23KfuYS+gVMC3LB8QGH9W1iGtDPsNWoQbgtXSExkBu2aDR4epiGWZOjZsj6lDl/N/AqqTC3UA==", - "dev": true, - "license": "MIT" - }, - "node_modules/stylelint/node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true, - "license": "MIT" - }, "node_modules/stylelint/node_modules/file-entry-cache": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-10.1.0.tgz", - "integrity": "sha512-Et/ex6smi3wOOB+n5mek+Grf7P2AxZR5ueqRUvAAn4qkyatXi3cUC1cuQXVkX0VlzBVsN4BkWJFmY/fYiRTdww==", + "version": "10.1.1", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-10.1.1.tgz", + "integrity": "sha512-zcmsHjg2B2zjuBgjdnB+9q0+cWcgWfykIcsDkWDB4GTPtl1eXUA+gTI6sO0u01AqK3cliHryTU55/b2Ow1hfZg==", "dev": true, "license": "MIT", "dependencies": { - "flat-cache": "^6.1.9" + "flat-cache": "^6.1.10" } }, "node_modules/stylelint/node_modules/flat-cache": { - "version": "6.1.9", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-6.1.9.tgz", - "integrity": "sha512-DUqiKkTlAfhtl7g78IuwqYM+YqvT+as0mY+EVk6mfimy19U79pJCzDZQsnqk3Ou/T6hFXWLGbwbADzD/c8Tydg==", + "version": "6.1.10", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-6.1.10.tgz", + "integrity": "sha512-B6/v1f0NwjxzmeOhzfXPGWpKBVA207LS7lehaVKQnFrVktcFRfkzjZZ2gwj2i1TkEUMQht7ZMJbABUT5N+V1Nw==", "dev": true, "license": "MIT", "dependencies": { - "cacheable": "^1.9.0", + "cacheable": "^1.10.0", "flatted": "^3.3.3", - "hookified": "^1.8.2" - } - }, - "node_modules/stylelint/node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" + "hookified": "^1.9.1" } }, "node_modules/stylelint/node_modules/postcss-selector-parser": { @@ -21470,61 +18994,6 @@ "node": ">=8" } }, - "node_modules/stylelint/node_modules/string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, - "license": "MIT", - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/stylelint/node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/stylelint/node_modules/write-file-atomic": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-5.0.1.tgz", - "integrity": "sha512-+QU2zd6OTD8XWIJCbffaiQeH9U73qIqafo1x6V1snCWYGJf6cVE0cDR4D8xRzcEnfI21IFrUPzPGtcPf8AC+Rw==", - "dev": true, - "license": "ISC", - "dependencies": { - "imurmurhash": "^0.1.4", - "signal-exit": "^4.0.1" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/sumchecker": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/sumchecker/-/sumchecker-3.0.1.tgz", - "integrity": "sha512-MvjXzkz/BOfyVDkG0oFOtBxHX2u3gKbMHIF/dXblZsgD3BWOFLmHovIpZY7BykJdAjcqRCBi1WYBNdEC9yI7vg==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "debug": "^4.1.0" - }, - "engines": { - "node": ">= 8.0" - } - }, "node_modules/supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", @@ -21632,6 +19101,23 @@ "node": ">=16.15.0" } }, + "node_modules/svgicons2svgfont/node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true, + "license": "MIT" + }, + "node_modules/svgicons2svgfont/node_modules/brace-expansion": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", + "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, "node_modules/svgicons2svgfont/node_modules/commander": { "version": "9.5.0", "resolved": "https://registry.npmjs.org/commander/-/commander-9.5.0.tgz", @@ -21693,6 +19179,22 @@ "dev": true, "license": "MIT" }, + "node_modules/synckit": { + "version": "0.11.8", + "resolved": "https://registry.npmjs.org/synckit/-/synckit-0.11.8.tgz", + "integrity": "sha512-+XZ+r1XGIJGeQk3VvXhT6xx/VpbHsRzsTkGgF6E5RX9TTXD0118l87puaEBZ566FhqblC6U0d4XnubznJDm30A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@pkgr/core": "^0.2.4" + }, + "engines": { + "node": "^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/synckit" + } + }, "node_modules/table": { "version": "6.9.0", "resolved": "https://registry.npmjs.org/table/-/table-6.9.0.tgz", @@ -21737,23 +19239,6 @@ "node": ">=8" } }, - "node_modules/table/node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true, - "license": "MIT" - }, - "node_modules/table/node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, "node_modules/table/node_modules/json-schema-traverse": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", @@ -21779,21 +19264,6 @@ "url": "https://github.com/chalk/slice-ansi?sponsor=1" } }, - "node_modules/table/node_modules/string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, - "license": "MIT", - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/table/node_modules/strip-ansi": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", @@ -21862,152 +19332,10 @@ "tiny_request": "latest" } }, - "node_modules/temp": { - "version": "0.9.4", - "resolved": "https://registry.npmjs.org/temp/-/temp-0.9.4.tgz", - "integrity": "sha512-yYrrsWnrXMcdsnu/7YMYAofM1ktpL5By7vZhf15CrXijWWrEYZks5AXBudalfSWJLlnen/QUJUB5aoB0kqZUGA==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "mkdirp": "^0.5.1", - "rimraf": "~2.6.2" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/temp-file": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/temp-file/-/temp-file-3.4.0.tgz", - "integrity": "sha512-C5tjlC/HCtVUOi3KWVokd4vHVViOmGjtLwIh4MuzPo/nMYTV/p1urt3RnMz2IWXDdKEGJH3k5+KPxtqRsUYGtg==", - "dev": true, - "license": "MIT", - "dependencies": { - "async-exit-hook": "^2.0.1", - "fs-extra": "^10.0.0" - } - }, - "node_modules/temp-file/node_modules/fs-extra": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", - "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/temp-file/node_modules/jsonfile": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", - "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "universalify": "^2.0.0" - }, - "optionalDependencies": { - "graceful-fs": "^4.1.6" - } - }, - "node_modules/temp-file/node_modules/universalify": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", - "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 10.0.0" - } - }, - "node_modules/temp/node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/temp/node_modules/glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "deprecated": "Glob versions prior to v9 are no longer supported", - "dev": true, - "license": "ISC", - "peer": true, - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/temp/node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dev": true, - "license": "ISC", - "peer": true, - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "node_modules/temp/node_modules/mkdirp": { - "version": "0.5.6", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", - "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "minimist": "^1.2.6" - }, - "bin": { - "mkdirp": "bin/cmd.js" - } - }, - "node_modules/temp/node_modules/rimraf": { - "version": "2.6.3", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", - "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", - "deprecated": "Rimraf versions prior to v4 are no longer supported", - "dev": true, - "license": "ISC", - "peer": true, - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - } - }, "node_modules/terser": { - "version": "5.40.0", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.40.0.tgz", - "integrity": "sha512-cfeKl/jjwSR5ar7d0FGmave9hFGJT8obyo0z+CrQOylLDbk7X81nPU6vq9VORa5jU30SkDnT2FXjLbR8HLP+xA==", + "version": "5.43.0", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.43.0.tgz", + "integrity": "sha512-CqNNxKSGKSZCunSvwKLTs8u8sGGlp27sxNZ4quGh0QeNuyHM0JSEM/clM9Mf4zUp6J+tO2gUXhgXT2YMMkwfKQ==", "dev": true, "license": "BSD-2-Clause", "dependencies": { @@ -22111,17 +19439,6 @@ "node": ">=8" } }, - "node_modules/test-exclude/node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, "node_modules/test-exclude/node_modules/glob": { "version": "7.2.3", "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", @@ -22184,33 +19501,6 @@ "dev": true, "license": "ISC" }, - "node_modules/tiny-async-pool": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/tiny-async-pool/-/tiny-async-pool-1.3.0.tgz", - "integrity": "sha512-01EAw5EDrcVrdgyCLgoSPvqznC0sVxDSVeiOz09FUpjh71G79VCqneOr+xvt7T1r76CF6ZZfPjHorN2+d+3mqA==", - "dev": true, - "license": "MIT", - "dependencies": { - "semver": "^5.5.0" - } - }, - "node_modules/tiny-async-pool/node_modules/semver": { - "version": "5.7.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", - "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", - "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver" - } - }, - "node_modules/tiny-typed-emitter": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/tiny-typed-emitter/-/tiny-typed-emitter-2.1.0.tgz", - "integrity": "sha512-qVtvMxeXbVej0cQWKqVSSAHmKZEHAvxdF8HEUBFWts8h+xEo5m/lEiPakuyZ3BnCBjOD8i24kzNOiOLLgsSxhA==", - "dev": true, - "license": "MIT" - }, "node_modules/tinyglobby": { "version": "0.2.14", "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.14.tgz", @@ -22228,26 +19518,26 @@ "url": "https://github.com/sponsors/SuperchupuDev" } }, - "node_modules/tmp": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.3.tgz", - "integrity": "sha512-nZD7m9iCPC5g0pYmcaxogYKggSfLsdxl8of3Q/oIbqCqLLIO9IAF0GWjX1z9NZRHPiXv8Wex4yDCaZsgEw0Y8w==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=14.14" - } - }, - "node_modules/tmp-promise": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/tmp-promise/-/tmp-promise-3.0.3.tgz", - "integrity": "sha512-RwM7MoPojPxsOBYnyd2hy0bxtIlVrihNs9pj5SUvY8Zz1sQcQG2tG1hSr8PDxfgEB8RNKDhqbIlroIarSNDNsQ==", + "node_modules/tldts": { + "version": "6.1.86", + "resolved": "https://registry.npmjs.org/tldts/-/tldts-6.1.86.tgz", + "integrity": "sha512-WMi/OQ2axVTf/ykqCQgXiIct+mSQDFdH2fkwhPwgEwvJ1kSzZRiinb0zF2Xb8u4+OqPChmyI6MEu4EezNJz+FQ==", "dev": true, "license": "MIT", "dependencies": { - "tmp": "^0.2.0" + "tldts-core": "^6.1.86" + }, + "bin": { + "tldts": "bin/cli.js" } }, + "node_modules/tldts-core": { + "version": "6.1.86", + "resolved": "https://registry.npmjs.org/tldts-core/-/tldts-core-6.1.86.tgz", + "integrity": "sha512-Je6p7pkk+KMzMv2XXKmAE3McmolOQFdxkKw0R8EYNr7sELW46JqnNeTX8ybPiQgvg1ymCoF8LXs5fzFaZvJPTA==", + "dev": true, + "license": "MIT" + }, "node_modules/tmpl": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz", @@ -22296,42 +19586,29 @@ } }, "node_modules/tough-cookie": { - "version": "4.1.4", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.1.4.tgz", - "integrity": "sha512-Loo5UUvLD9ScZ6jh8beX1T6sO1w2/MpCRpEP7V280GKMVUQ0Jzar2U3UJPsrdbziLEMMhu3Ujnq//rhiFuIeag==", + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-5.1.2.tgz", + "integrity": "sha512-FVDYdxtnj0G6Qm/DhNPSb8Ju59ULcup3tuJxkFb5K8Bv2pUXILbf0xZWU8PX8Ov19OXljbUyveOFwRMwkXzO+A==", "dev": true, "license": "BSD-3-Clause", "dependencies": { - "psl": "^1.1.33", - "punycode": "^2.1.1", - "universalify": "^0.2.0", - "url-parse": "^1.5.3" + "tldts": "^6.1.32" }, "engines": { - "node": ">=6" - } - }, - "node_modules/tough-cookie/node_modules/universalify": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.2.0.tgz", - "integrity": "sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 4.0.0" + "node": ">=16" } }, "node_modules/tr46": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-3.0.0.tgz", - "integrity": "sha512-l7FvfAHlcmulp8kr+flpQZmVwtu7nfRV7NZujtN0OqES8EL4O4e0qqzL0DC5gAvx/ZC/9lk6rhcUwYvkBnBnYA==", + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-5.1.1.tgz", + "integrity": "sha512-hdF5ZgjTqgAntKkklYw0R03MG2x/bSzTtkxmIRw/sTNV8YXsCJ1tfLAX23lhxhHJlEf3CRCOCGGWw3vI3GaSPw==", "dev": true, "license": "MIT", "dependencies": { - "punycode": "^2.1.1" + "punycode": "^2.3.1" }, "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/tree-dump": { @@ -22361,16 +19638,6 @@ "tree-kill": "cli.js" } }, - "node_modules/truncate-utf8-bytes": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/truncate-utf8-bytes/-/truncate-utf8-bytes-1.0.2.tgz", - "integrity": "sha512-95Pu1QXQvruGEhv62XCMO3Mm90GscOCClvrIUwCM0PYOXK3kaF3l3sIHxx71ThJfcbM2O5Au6SO3AWCSEfW4mQ==", - "dev": true, - "license": "WTFPL", - "dependencies": { - "utf8-byte-length": "^1.0.1" - } - }, "node_modules/ts-api-utils": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-2.1.0.tgz", @@ -22457,9 +19724,9 @@ "license": "0BSD" }, "node_modules/tsx": { - "version": "4.19.4", - "resolved": "https://registry.npmjs.org/tsx/-/tsx-4.19.4.tgz", - "integrity": "sha512-gK5GVzDkJK1SI1zwHf32Mqxf2tSJkNx+eYcNly5+nHvWqXUJYUkWBQtKauoESz3ymezAI++ZwT855x5p5eop+Q==", + "version": "4.20.3", + "resolved": "https://registry.npmjs.org/tsx/-/tsx-4.20.3.tgz", + "integrity": "sha512-qjbnuR9Tr+FJOMBqJCW5ehvIo/buZq7vH7qD7JziU98h6l3qGy0a/yPFjwO+y0/T7GFpNgNAvEcPPVfyT8rrPQ==", "dev": true, "license": "MIT", "dependencies": { @@ -22683,15 +19950,15 @@ } }, "node_modules/typescript-eslint": { - "version": "8.33.1", - "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.33.1.tgz", - "integrity": "sha512-AgRnV4sKkWOiZ0Kjbnf5ytTJXMUZQ0qhSVdQtDNYLPLnjsATEYhaO94GlRQwi4t4gO8FfjM6NnikHeKjUm8D7A==", + "version": "8.34.1", + "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.34.1.tgz", + "integrity": "sha512-XjS+b6Vg9oT1BaIUfkW3M3LvqZE++rbzAMEHuccCfO/YkP43ha6w3jTEMilQxMF92nVOYCcdjv1ZUhAa1D/0ow==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/eslint-plugin": "8.33.1", - "@typescript-eslint/parser": "8.33.1", - "@typescript-eslint/utils": "8.33.1" + "@typescript-eslint/eslint-plugin": "8.34.1", + "@typescript-eslint/parser": "8.34.1", + "@typescript-eslint/utils": "8.34.1" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -22751,9 +20018,9 @@ } }, "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.8.0", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.8.0.tgz", + "integrity": "sha512-9UJ2xGDvQ43tYyVMpuHlsgApydB8ZKfVYTsLDhXkFL/6gfkp+U8xTGdh8pMJv1SpZna0zxG1DwsKZsreLbXBxw==", "devOptional": true, "license": "MIT" }, @@ -22827,42 +20094,6 @@ "node": "^12.13.0 || ^14.15.0 || >=16.0.0" } }, - "node_modules/universalify": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", - "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 4.0.0" - } - }, - "node_modules/unixify": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unixify/-/unixify-1.0.0.tgz", - "integrity": "sha512-6bc58dPYhCMHHuwxldQxO3RRNZ4eCogZ/st++0+fcC1nr0jiGUtAdBJ2qzmLQWSxbtz42pWt4QQMiZ9HvZf5cg==", - "dev": true, - "license": "MIT", - "dependencies": { - "normalize-path": "^2.1.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/unixify/node_modules/normalize-path": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", - "integrity": "sha512-3pKJwH184Xo/lnH6oyP1q2pMd7HcypqqmRs91/6/i2CGtWwIKGCkOOMTm/zXbgTEWHw1uNpNi/igc3ePOYHb6w==", - "dev": true, - "license": "MIT", - "dependencies": { - "remove-trailing-separator": "^1.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/unpipe": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", @@ -22873,44 +20104,39 @@ "node": ">= 0.8" } }, - "node_modules/unused-filename": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/unused-filename/-/unused-filename-4.0.1.tgz", - "integrity": "sha512-ZX6U1J04K1FoSUeoX1OicAhw4d0aro2qo+L8RhJkiGTNtBNkd/Fi1Wxoc9HzcVu6HfOzm0si/N15JjxFmD1z6A==", + "node_modules/unrs-resolver": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/unrs-resolver/-/unrs-resolver-1.9.0.tgz", + "integrity": "sha512-wqaRu4UnzBD2ABTC1kLfBjAqIDZ5YUTr/MLGa7By47JV1bJDSW7jq/ZSLigB7enLe7ubNaJhtnBXgrc/50cEhg==", "dev": true, + "hasInstallScript": true, "license": "MIT", "dependencies": { - "escape-string-regexp": "^5.0.0", - "path-exists": "^5.0.0" - }, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + "napi-postinstall": "^0.2.2" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/unused-filename/node_modules/escape-string-regexp": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz", - "integrity": "sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" + "url": "https://opencollective.com/unrs-resolver" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/unused-filename/node_modules/path-exists": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-5.0.0.tgz", - "integrity": "sha512-RjhtfwJOxzcFmNOi6ltcbcu4Iu+FL3zEj83dk4kAS+fVpTxXLO1b38RvJgT/0QwvV/L3aY9TAnyv0EOqW4GoMQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + "optionalDependencies": { + "@unrs/resolver-binding-android-arm-eabi": "1.9.0", + "@unrs/resolver-binding-android-arm64": "1.9.0", + "@unrs/resolver-binding-darwin-arm64": "1.9.0", + "@unrs/resolver-binding-darwin-x64": "1.9.0", + "@unrs/resolver-binding-freebsd-x64": "1.9.0", + "@unrs/resolver-binding-linux-arm-gnueabihf": "1.9.0", + "@unrs/resolver-binding-linux-arm-musleabihf": "1.9.0", + "@unrs/resolver-binding-linux-arm64-gnu": "1.9.0", + "@unrs/resolver-binding-linux-arm64-musl": "1.9.0", + "@unrs/resolver-binding-linux-ppc64-gnu": "1.9.0", + "@unrs/resolver-binding-linux-riscv64-gnu": "1.9.0", + "@unrs/resolver-binding-linux-riscv64-musl": "1.9.0", + "@unrs/resolver-binding-linux-s390x-gnu": "1.9.0", + "@unrs/resolver-binding-linux-x64-gnu": "1.9.0", + "@unrs/resolver-binding-linux-x64-musl": "1.9.0", + "@unrs/resolver-binding-wasm32-wasi": "1.9.0", + "@unrs/resolver-binding-win32-arm64-msvc": "1.9.0", + "@unrs/resolver-binding-win32-ia32-msvc": "1.9.0", + "@unrs/resolver-binding-win32-x64-msvc": "1.9.0" } }, "node_modules/update-browserslist-db": { @@ -22965,24 +20191,6 @@ "punycode": "^2.1.0" } }, - "node_modules/url-parse": { - "version": "1.5.10", - "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.10.tgz", - "integrity": "sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "querystringify": "^2.1.1", - "requires-port": "^1.0.0" - } - }, - "node_modules/utf8-byte-length": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/utf8-byte-length/-/utf8-byte-length-1.0.5.tgz", - "integrity": "sha512-Xn0w3MtiQ6zoz2vFyUVruaCL53O/DwUvkEeOvj+uulMm0BkUGYWmBYVyElqZaSLhY6ZD0ulfU3aBra2aVT4xfA==", - "dev": true, - "license": "(WTFPL OR MIT)" - }, "node_modules/util-deprecate": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", @@ -23058,16 +20266,16 @@ } }, "node_modules/w3c-xmlserializer": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-4.0.0.tgz", - "integrity": "sha512-d+BFHzbiCx6zGfz0HyQ6Rg69w9k19nviJspaj4yNscGjrHu94sVP+aRm75yEbCh+r2/yR+7q6hux9LVtbuTGBw==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-5.0.0.tgz", + "integrity": "sha512-o8qghlI8NZHU1lLPrpi2+Uq7abh4GGPpYANlalzWxyWteJOCsr/P+oPBA49TOLu5FTZO4d3F9MnWJfiMo4BkmA==", "dev": true, "license": "MIT", "dependencies": { - "xml-name-validator": "^4.0.0" + "xml-name-validator": "^5.0.0" }, "engines": { - "node": ">=14" + "node": ">=18" } }, "node_modules/walker": { @@ -23080,22 +20288,6 @@ "makeerror": "1.0.12" } }, - "node_modules/watchboy": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/watchboy/-/watchboy-0.4.3.tgz", - "integrity": "sha512-GHs1HxwvxSMBsqd/WfTOZhj5gBdMqf5HQpfgtKxDfZRxrlYPDdVLRB61LCeRzJaWANmvSIMlfmRVDwVmJFgAKA==", - "dev": true, - "license": "ISC", - "dependencies": { - "lodash.difference": "^4.5.0", - "micromatch": "^4.0.2", - "pify": "^4.0.1", - "unixify": "^1.0.0" - }, - "engines": { - "node": ">=8.0.0" - } - }, "node_modules/watchpack": { "version": "2.4.4", "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.4.tgz", @@ -23120,16 +20312,6 @@ "minimalistic-assert": "^1.0.0" } }, - "node_modules/wcwidth": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz", - "integrity": "sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==", - "dev": true, - "license": "MIT", - "dependencies": { - "defaults": "^1.0.3" - } - }, "node_modules/webidl-conversions": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz", @@ -23540,40 +20722,40 @@ } }, "node_modules/whatwg-encoding": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-2.0.0.tgz", - "integrity": "sha512-p41ogyeMUrw3jWclHWTQg1k05DSVXPLcVxRTYsXUk+ZooOCZLcoYgPZ/HL/D/N+uQPOtcp1me1WhBEaX02mhWg==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-3.1.1.tgz", + "integrity": "sha512-6qN4hJdMwfYBtE3YBTTHhoeuUrDBPZmbQaxWAqSALV/MeEnR5z1xd8UKud2RAkFoPkmB+hli1TZSnyi84xz1vQ==", "dev": true, "license": "MIT", "dependencies": { "iconv-lite": "0.6.3" }, "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/whatwg-mimetype": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-3.0.0.tgz", - "integrity": "sha512-nt+N2dzIutVRxARx1nghPKGv1xHikU7HKdfafKkLNLindmPU/ch3U31NOCGGA/dmPcmb1VlofO0vnKAcsm0o/Q==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-4.0.0.tgz", + "integrity": "sha512-QaKxh0eNIi2mE9p2vEdzfagOKHCcj1pJ56EEHGQOVxp8r9/iszLUUV7v89x9O1p/T+NlTM5W7jW6+cz4Fq1YVg==", "dev": true, "license": "MIT", "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/whatwg-url": { - "version": "11.0.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-11.0.0.tgz", - "integrity": "sha512-RKT8HExMpoYx4igMiVMY83lN6UeITKJlBQ+vR/8ZJ8OCdSiN3RwCq+9gH0+Xzj0+5IrM6i4j/6LuvzbZIQgEcQ==", + "version": "14.2.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-14.2.0.tgz", + "integrity": "sha512-De72GdQZzNTUBBChsXueQUnPKDkg/5A5zp7pFDuQAj5UFoENpiACU0wlCvzpAGnTkj++ihpKwKyYewn/XNUbKw==", "dev": true, "license": "MIT", "dependencies": { - "tr46": "^3.0.0", + "tr46": "^5.1.0", "webidl-conversions": "^7.0.0" }, "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/which": { @@ -23691,61 +20873,6 @@ "string-width": "^1.0.2 || 2 || 3 || 4" } }, - "node_modules/wide-align/node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/wide-align/node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true, - "license": "MIT" - }, - "node_modules/wide-align/node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/wide-align/node_modules/string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, - "license": "MIT", - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/wide-align/node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/widest-line": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-4.0.1.tgz", @@ -23852,38 +20979,6 @@ "node": ">=8" } }, - "node_modules/wrap-ansi-cjs/node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true, - "license": "MIT" - }, - "node_modules/wrap-ansi-cjs/node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/wrap-ansi-cjs/node_modules/string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, - "license": "MIT", - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/wrap-ansi-cjs/node_modules/strip-ansi": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", @@ -23936,26 +21031,19 @@ "license": "ISC" }, "node_modules/write-file-atomic": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-4.0.2.tgz", - "integrity": "sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-5.0.1.tgz", + "integrity": "sha512-+QU2zd6OTD8XWIJCbffaiQeH9U73qIqafo1x6V1snCWYGJf6cVE0cDR4D8xRzcEnfI21IFrUPzPGtcPf8AC+Rw==", "dev": true, "license": "ISC", "dependencies": { "imurmurhash": "^0.1.4", - "signal-exit": "^3.0.7" + "signal-exit": "^4.0.1" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/write-file-atomic/node_modules/signal-exit": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", - "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", - "dev": true, - "license": "ISC" - }, "node_modules/ws": { "version": "8.18.2", "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.2.tgz", @@ -23979,21 +21067,21 @@ } }, "node_modules/xml-name-validator": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-4.0.0.tgz", - "integrity": "sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-5.0.0.tgz", + "integrity": "sha512-EvGK8EJ3DhaHfbRlETOWAS5pO9MZITeauHKJyb8wyajUfQUenkIg2MvLDTZ4T/TgIcm3HU0TFBgWWboAZ30UHg==", "dev": true, "license": "Apache-2.0", "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/xmlbuilder": { "version": "15.1.1", "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-15.1.1.tgz", "integrity": "sha512-yMqGBqtXyeN1e3TGYvgNgDVZ3j84W4cwkOXQswghol6APgZWaff9lnbvN7MHYJOiXsvGPXtjTYJEiC9J2wv9Eg==", - "devOptional": true, "license": "MIT", + "optional": true, "engines": { "node": ">=8.0" } @@ -24064,72 +21152,6 @@ "node": ">=12" } }, - "node_modules/yargs/node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/yargs/node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true, - "license": "MIT" - }, - "node_modules/yargs/node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/yargs/node_modules/string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, - "license": "MIT", - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/yargs/node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/yauzl": { - "version": "2.10.0", - "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz", - "integrity": "sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==", - "dev": true, - "license": "MIT", - "dependencies": { - "buffer-crc32": "~0.2.3", - "fd-slicer": "~1.1.0" - } - }, "node_modules/yocto-queue": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", @@ -24144,9 +21166,9 @@ } }, "node_modules/zod": { - "version": "3.25.50", - "resolved": "https://registry.npmjs.org/zod/-/zod-3.25.50.tgz", - "integrity": "sha512-VstOnRxf4tlSq0raIwbn0n+LA34SxVoZ8r3pkwSUM0jqNiA/HCMQEVjTuS5FZmHsge+9MDGTiAuHyml5T0um6A==", + "version": "3.25.67", + "resolved": "https://registry.npmjs.org/zod/-/zod-3.25.67.tgz", + "integrity": "sha512-idA2YXwpCdqUSKRCACDE6ItZD9TZzy3OZMtpfLoh6oPR47lipysRrJfjzMqFxQ3uJuUPyUeWe1r9vLH33xO/Qw==", "dev": true, "license": "MIT", "funding": { diff --git a/package.json b/package.json index be2fd18b4..264b12921 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "telegram-t", - "version": "10.9.72", + "version": "10.9.71", "description": "", "type": "module", "main": "index.js", @@ -12,12 +12,9 @@ "build:mocked": "cross-env APP_ENV=test APP_MOCKED_CLIENT=1 npm run build:dev", "build:production": "webpack && bash ./deploy/copy_to_dist.sh", "web:release:production": "npm i && npm run build:production && git add -A && git commit -a -m '[Build]' --no-verify && git push", - "electron:dev": "npm run electron:webpack && IS_PACKAGED_ELECTRON=true concurrently --ks SIGKILL -n main,renderer,electron \"npm run electron:webpack -- --watch\" \"npm run dev\" \"electronmon dist/electron.cjs\"", - "electron:webpack": "cross-env APP_ENV=$ENV webpack --config ./webpack-electron.config.ts", - "electron:build": "IS_PACKAGED_ELECTRON=true npm run build:$ENV && electron-builder install-app-deps && ENV=$ENV npm run electron:webpack", - "electron:package": "npm run electron:build && npx rimraf dist-electron && electron-builder build --win --mac --linux --config src/electron/config.js", - "electron:package:staging": "ENV=staging npm run electron:package -- -p never", - "electron:release:production": "ENV=production npm run electron:package -- -p always", + "tauri": "tauri", + "tauri:dev": "tauri dev", + "tauri:build": "tauri build", "telegraph:update_changelog": "node ./dev/telegraphChangelog.js", "check": "tsc && stylelint \"**/*.{css,scss}\" && eslint", "check:fix": "stylelint \"**/*.{css,scss}\" --fix && eslint --fix", @@ -40,9 +37,6 @@ "*.{ts,tsx,js}": "eslint --fix", "*.{css,scss}": "stylelint --fix" }, - "electronmon": { - "logLevel": "quiet" - }, "author": "Alexander Zinchuk (alexander@zinchuk.com)", "license": "GPL-3.0-or-later", "devDependencies": { @@ -51,72 +45,64 @@ "@babel/preset-react": "^7.27.1", "@babel/preset-typescript": "^7.27.1", "@babel/register": "^7.27.1", - "@eslint/js": "^9.28.0", + "@eslint/js": "^9.29.0", "@glen/jest-raw-loader": "^2.0.0", "@mytonwallet/stylelint-whole-pixel": "github:mytonwallet-org/stylelint-whole-pixel#fd07e44d786460f7d469076b1d2cb1b05297896c", "@mytonwallet/webpack-watch-file-plugin": "github:mytonwallet-org/webpack-watch-file-plugin#747b7fd29da9a928aa8b63299adfba461d2f1231", - "@playwright/test": "^1.52.0", + "@playwright/test": "^1.53.0", "@statoscope/cli": "5.29.0", "@statoscope/webpack-plugin": "5.29.0", - "@stylistic/eslint-plugin": "^4.4.0", + "@stylistic/eslint-plugin": "^4.4.1", "@stylistic/stylelint-config": "^2.0.0", "@stylistic/stylelint-plugin": "^3.1.2", + "@tauri-apps/cli": "^2.8.0", "@testing-library/jest-dom": "^6.6.3", "@twbs/fantasticon": "^3.1.0", "@types/dom-view-transitions": "^1.0.6", "@types/hast": "^3.0.4", - "@types/jest": "^29.5.14", - "@types/node": "^22.15.29", - "@types/react": "^19.1.6", - "@types/react-dom": "^19.1.5", + "@types/jest": "^30.0.0", + "@types/node": "^24.0.3", + "@types/react": "^19.1.8", + "@types/react-dom": "^19.1.6", "@types/webpack": "^5.28.5", - "@typescript-eslint/eslint-plugin": "^8.33.1", - "@typescript-eslint/parser": "^8.33.1", + "@typescript-eslint/eslint-plugin": "^8.34.1", + "@typescript-eslint/parser": "^8.34.1", "@webpack-cli/serve": "^3.0.1", "autoprefixer": "^10.4.21", "babel-loader": "^10.0.0", "babel-plugin-transform-import-meta": "^2.3.3", - "bindings": "git+https://github.com/zubiden/node-bindings#1f689378b1cd26f99d3b7156fe40a520365d1272", - "browserlist": "^1.0.1", "buffer": "^6.0.3", "concurrently": "^9.1.2", "copy-webpack-plugin": "^13.0.0", "cross-env": "^7.0.3", "css-loader": "^7.1.2", "dotenv": "^16.5.0", - "electron": "^36.3.2", - "electron-builder": "^26.0.12", - "electron-conf": "^1.3.0", - "electron-context-menu": "^4.1.0", - "electron-drag-click": "git+https://github.com/zubiden/electron-drag-click#cf6918ddb648e13ebcf6cf1e7aa008258edc06ad", - "electron-updater": "^6.6.2", - "electronmon": "^2.0.3", - "eslint": "^9.28.0", + "eslint": "^9.29.0", "eslint-plugin-import": "^2.31.0", - "eslint-plugin-jest": "^28.12.0", + "eslint-plugin-jest": "^28.14.0", "eslint-plugin-jsx-a11y": "^6.10.2", "eslint-plugin-no-null": "^1.0.2", "eslint-plugin-react": "^7.37.5", "eslint-plugin-react-hooks-static-deps": "git+https://github.com/zubiden/eslint-plugin-react-hooks-static-deps#c16f35bf2e6e364cbc692c73cc350c1c5d46cc6e", - "eslint-plugin-react-x": "^1.51.0", + "eslint-plugin-react-x": "^1.52.2", "eslint-plugin-simple-import-sort": "^12.1.1", "eslint-plugin-tt-multitab": "git+https://github.com/zubiden/eslint-plugin-tt-multitab#15d542004d39ec7c29d50385484511bab0b77ea9", "eslint-plugin-unused-imports": "^4.1.4", "fake-indexeddb": "^6.0.1", "git-revision-webpack-plugin": "^5.0.0", "gitlog": "^5.1.0", - "glob": "^11.0.2", + "glob": "^11.0.3", "html-webpack-plugin": "^5.6.3", "husky": "^9.1.7", - "jest": "^29.7.0", - "jest-environment-jsdom": "^29.7.0", - "lint-staged": "^16.1.0", + "jest": "^30.0.0", + "jest-environment-jsdom": "^30.0.0", + "lint-staged": "^16.1.2", "mini-css-extract-plugin": "^2.9.2", - "minimatch": "^10.0.1", + "minimatch": "^10.0.3", "postcss-loader": "^8.1.1", "postcss-modules": "^6.0.1", "react": "^19.1.0", - "sass": "^1.89.1", + "sass": "^1.89.2", "sass-loader": "^16.0.5", "script-loader": "^0.7.2", "serve": "^14.2.4", @@ -128,21 +114,26 @@ "stylelint-high-performance-animation": "^1.11.0", "stylelint-selector-tag-no-without-class": "^3.0.1", "telegraph-node": "^1.0.4", - "tsx": "^4.19.4", + "tsx": "^4.20.3", "typescript": "^5.8.3", - "typescript-eslint": "^8.33.1", + "typescript-eslint": "^8.34.1", "webpack": "^5.99.9", "webpack-dev-server": "^5.2.2" }, "dependencies": { "@cryptography/aes": "^0.1.1", + "@tauri-apps/api": "^2.8.0", + "@tauri-apps/plugin-notification": "^2.3.1", + "@tauri-apps/plugin-process": "^2.3.0", + "@tauri-apps/plugin-shell": "^2.3.1", + "@tauri-apps/plugin-updater": "^2.9.0", "async-mutex": "^0.5.0", "big-integer": "github:painor/BigInteger.js", "emoji-data-ios": "git+https://github.com/korenskoy/emoji-data-ios#443f1c9d7b16a82e7ee53f7f226d7d9a9920a105", "idb-keyval": "^6.2.2", "lowlight": "^3.3.0", "mp4box": "^0.5.4", - "music-metadata": "^11.2.3", + "music-metadata": "^11.3.0", "opus-recorder": "github:Ajaxy/opus-recorder", "os-browserify": "^0.3.0", "pako": "^2.1.0", @@ -152,8 +143,5 @@ "optionalDependencies": { "dmg-license": "^1.0.11", "fsevents": "^2.3.3" - }, - "overrides": { - "bindings": "$bindings" } } diff --git a/public/icon-electron-macos.icns b/public/icon-electron-macos.icns deleted file mode 100644 index 6c738ad70f445cb8843f3c1c733b2da9a8dc12e3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 178036 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

8b>C=ezoo7;R%9R0cK+ukAHrR4`N+^Q6ubu@b{ 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ⅇh#-_7 z-wx)3FK7y^){P)$S{AkhRx4RUB*xC`&65l>M|;Nh4-A5j#5Fn}CcCykd|6n7;P7W} zT!V50D!T+X9x-_Vz{7#z?MMPgTPScT-&qCb$b3`{g+8g&FwyVktDEbs75Ns?yI>y{ zx-feF`vD)lU7kB6YIDJYasz=u8JqH&y=KZ{?(WMGMCirCVDN)n;Kr^>D06!Du-V(T z5ehlG%3JE3?mvhRI~zc$t}OJ`6|~kCvEH`jY3w&1=s4k(A00PJZ8!a@#I$?Xe9`6 zNF$VCm4Q1A=b@?!0&#OCTtpdz`5=5i5g2J=Xbn*4zUScr!oaYwEr75ES{oaHs-8+L z0|`T{1JcXF0(26H^MKgma3Ico7QjOQ4*~%P=KxsLeh!dV%>J_!TFmjk_&(#ESj>A6 zh|6am!s)=O%9m*CS|j$ri@e7+}As}VJk_k3HNf` z*O4+UxQNrYK2vcRjESjxC&ykv zOD8oc5oo%S%j-m*dI`;gWu;she!PzwItoZG0$GCBK)j|pyQkiv+PyAjFrJUj-%ght zuu7#XXd?z!|sx0oLo264=d@;nf0eueB?`PN!ufu+@;d^<=X>om~y4wM4=+)%; zdbYEXNYqI1bW1JsWDOWo-H$cislV|;V@{9!a+g9S11~()RE;&aigfb|JlBQE{(xMGW`SLZZf z9_^~gGNgS-P+uwxw@Z31Odj}4l2DW1bvrq>7g{LKuv96GgT3+{xc^eP-KRU+>!PZ+ ziL@aHmr$4lPG9fTOU!_CWIi0Tf%e^C(t0Yp##`Vtd7>YV>3;Wu3NUdlYlKs&zpcjF zaFN&r%~Y-rc2KLNdN^8MAbRU!uW0}AcMrSBRD3)kGE`44PcYccJ_CXH%@Wi9Rd9t> z(YG@>t2m=-a%>5&`THh*+FEHm&3A1%eYySqZ6UmyRibF3>Sf&rS200g^En>HSu6WQ z4VmS1Z^u92ZK_z!9?sSzC~0uqCC~u+QNpgky#agjVZxy z6@y5O3^ma|?npty@U8W6@lsQ~}HF1=}3EF-Q)a@W<;M)ZXc ztH{|ru}53hF@osNf7U43VT(_oOU88}-?H<^zpV0% zW2#fUEu0xm0pHYqAJuoe(CC?T98`YDVHvr@pB5BDsnkxJ*m7PuBeK*L$y-pyd=qg? z!r~HILOka`km7Sk0uX}B%v$G?0?s4IoYs*P^MOyfD=yqz(zA}Fn;zyxb&Tv2#Lw$} z@d`tVz@jUB`%IQr&e!Et^WvNO@D0ZyDJ?|8oAwy{OrPzeB-zEMosZ^xmh@*DB8=DW zSqoRwN7SX>P`aCp46JU|LgpCYK?2y-2D5Pi2_8v0pRCcNQAP|N>Sb7Za)*5qFB==q zZKK5Lgf{DukHT0LPp3@w$asr@jo#FSjK}h*WUZAV$AXNfy*Dj=&#F8S3om`}Y5SuB zc{pe>>%^T4EVQ}Bi=pFq{-8INeAW0cRKmkaIrYDy4LU!Nt2|%3PKiwoRykHYOz2xE z>^kW7TswkX7Oe+Aq^;^?PW3j`c0QVZkWAHT(4yKeB52 zV??X3*U1vt0Lj9yiJ~}FSI)8fg=~fq|umg{bUQj#7~$R8HyvDwnN4+7Ig{C<+u|Ngikt8c*<6CStv?M6ACD))wbM z@ZYafTtc+Cn9B9+I8<83=|@fbA3FSqVgsE~HikG463`GdF|<@#)&XT>`Mm)=haqx` yr_UnIt!yr%eFDO1F>wjW*V8hxnGG!uTH7BDPAu+Qd%&^n+xC4Y_k;WlH~$MCqxlE` diff --git a/public/icon-electron-windows.ico b/public/icon-electron-windows.ico deleted file mode 100644 index 0b02fb1211750380cdbb21c3014efd201c2ac9bb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 119535 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 Jg_2d+{{e_5NvHq- diff --git a/public/version.txt b/public/version.txt index 8dac133f6..f071e365a 100644 --- a/public/version.txt +++ b/public/version.txt @@ -1 +1 @@ -10.9.72 +10.9.71 diff --git a/src/api/gramjs/methods/client.ts b/src/api/gramjs/methods/client.ts index 9acad5047..c75de89ec 100644 --- a/src/api/gramjs/methods/client.ts +++ b/src/api/gramjs/methods/client.ts @@ -67,7 +67,7 @@ const ABORT_CONTROLLERS = new Map(); let client: TelegramClient; let currentUserId: string | undefined; -export async function init(initialArgs: ApiInitialArgs) { +export async function init(initialArgs: ApiInitialArgs, onConnected?: NoneToVoidFunction) { if (DEBUG) { // eslint-disable-next-line no-console console.log('>>> START INIT API'); @@ -132,7 +132,7 @@ export async function init(initialArgs: ApiInitialArgs) { webAuthTokenFailed: onWebAuthTokenFailed, mockScenario, accountIds, - }); + }, onConnected); } catch (err: any) { // eslint-disable-next-line no-console console.error(err); diff --git a/src/api/gramjs/methods/init.ts b/src/api/gramjs/methods/init.ts index 5fbcb8ddb..3039d95f0 100644 --- a/src/api/gramjs/methods/init.ts +++ b/src/api/gramjs/methods/init.ts @@ -6,6 +6,7 @@ import type { import type { LocalDb } from '../localDb'; import type { MethodArgs, MethodResponse, Methods } from './types'; +import Deferred from '../../../util/Deferred'; import { updateFullLocalDb } from '../localDb'; import { init as initUpdateEmitter } from '../updates/apiUpdateEmitter'; import { init as initClient } from './client'; @@ -16,8 +17,9 @@ export function initApi(_onUpdate: OnApiUpdate, initialArgs: ApiInitialArgs, ini if (initialLocalDb) updateFullLocalDb(initialLocalDb); - // IMPORTANT: Do not await this, or login will not work - initClient(initialArgs); + const connectDeferred = new Deferred(); + initClient(initialArgs, () => connectDeferred.resolve()); + return connectDeferred.promise; } export function callApi(fnName: T, ...args: MethodArgs): MethodResponse { diff --git a/src/api/gramjs/worker/connector.ts b/src/api/gramjs/worker/connector.ts index a83e14f5a..28af80814 100644 --- a/src/api/gramjs/worker/connector.ts +++ b/src/api/gramjs/worker/connector.ts @@ -6,6 +6,7 @@ import type { MethodArgs, MethodResponse, Methods } from '../methods/types'; import type { OriginPayload, ThenArg, WorkerMessageEvent } from './types'; import { DEBUG, IGNORE_UNHANDLED_ERRORS } from '../../../config'; +import { IS_TAURI } from '../../../util/browser/globalEnvironment'; import { logDebugMessage } from '../../../util/debugConsole'; import Deferred from '../../../util/Deferred'; import { getCurrentTabId, subscribeToMasterChange } from '../../../util/establishMultitabRole'; @@ -101,8 +102,8 @@ export function initApi(onUpdate: OnApiUpdate, initialArgs: ApiInitialArgs) { }); subscribeToWorker(onUpdate); - if (initialArgs.platform === 'iOS') { - setupIosHealthCheck(); + if (initialArgs.platform === 'iOS' || (initialArgs.platform === 'macOS' && IS_TAURI)) { + setupHealthCheck(); } } @@ -419,7 +420,7 @@ function makeRequest(message: OriginPayload) { const startedAt = Date.now(); // Workaround for iOS sometimes stops interacting with worker -function setupIosHealthCheck() { +function setupHealthCheck() { window.addEventListener('focus', () => { void ensureWorkerPing(); // Sometimes a single check is not enough diff --git a/src/api/gramjs/worker/worker.ts b/src/api/gramjs/worker/worker.ts index 66bf73f93..9bc09a935 100644 --- a/src/api/gramjs/worker/worker.ts +++ b/src/api/gramjs/worker/worker.ts @@ -54,14 +54,15 @@ onmessage = ({ data }: OriginMessageEvent) => { switch (payload.type) { case 'initApi': { const { messageId, args } = payload; - initApi(onUpdate, args[0], args[1]); - if (messageId) { - sendToOrigin({ - type: 'methodResponse', - messageId, - response: true, - }); - } + initApi(onUpdate, args[0], args[1]).then(() => { + if (messageId) { + sendToOrigin({ + type: 'methodResponse', + messageId, + response: true, + }); + } + }); break; } case 'callMethod': { diff --git a/src/assets/localization/fallback.strings b/src/assets/localization/fallback.strings index d24ca73e5..edd80af39 100644 --- a/src/assets/localization/fallback.strings +++ b/src/assets/localization/fallback.strings @@ -1118,7 +1118,6 @@ "AttachStory" = "Story"; "AttachInvoice" = "Invoice: {description}"; "AttachLocation" = "Location"; -"AttachLiveLocation" = "Live Location"; "AttachGiveaway" = "Giveaway"; "AttachGiveawayResults" = "Giveaway Results"; "AttachTodo" = "Checklist"; @@ -2199,6 +2198,7 @@ "ToDoListErrorChooseTasks" = "Please enter at least one task."; "GiftInfoCollectibleBy" = "Collectible #{number} by **{owner}**"; "PremiumPreviewTodo" = "Checklists"; +"NativeDownloadFailed" = "Failed to save file to the Downloads folder"; "DescriptionAboutTon" = "Offer TON to submit post suggestions to channels on Telegram."; "ButtonTopUpViaFragment" = "Top Up Via Fragment"; "TonModalHint" = "You can top up your TON using Fragment."; diff --git a/src/components/App.tsx b/src/components/App.tsx index 5a57f6e2c..4b02401dd 100644 --- a/src/components/App.tsx +++ b/src/components/App.tsx @@ -19,6 +19,7 @@ import { getInitialLocationHash, parseInitialLocationHash } from '../util/routin import { checkSessionLocked, hasStoredSession } from '../util/sessions'; import { updateSizes } from '../util/windowSize'; +import useTauriDrag from '../hooks/tauri/useTauriDrag'; import useAppLayout from '../hooks/useAppLayout'; import useFlag from '../hooks/useFlag'; import usePreviousDeprecated from '../hooks/usePreviousDeprecated'; @@ -213,6 +214,8 @@ const App: FC = ({ } } + useTauriDrag(); + useLayoutEffect(() => { document.body.classList.add(styles.bg); }, []); diff --git a/src/components/auth/Auth.scss b/src/components/auth/Auth.scss index 498f3d8d8..7cd43ab0f 100644 --- a/src/components/auth/Auth.scss +++ b/src/components/auth/Auth.scss @@ -20,7 +20,7 @@ margin-bottom: 1.75rem; margin-left: auto; - body.is-electron & { + body.is-tauri & { width: 6rem; height: 6rem; margin-bottom: 1.75rem; @@ -60,7 +60,7 @@ } } - body.is-electron #auth-phone-number-form & { + body.is-tauri #auth-phone-number-form & { padding-top: 3rem; .form { @@ -83,15 +83,6 @@ #auth-password-form, #auth-qr-form { overflow-y: auto; - height: 100%; - - body.is-electron.is-macos & { - -webkit-app-region: drag; - - .input-group { - -webkit-app-region: no-drag; - } - } } #auth-phone-number-form { @@ -247,6 +238,10 @@ position: absolute; top: 1rem; left: 1rem; + + body.is-tauri & { + left: var(--window-controls-width); + } } @keyframes qr-show { diff --git a/src/components/auth/Auth.tsx b/src/components/auth/Auth.tsx index 88576f6ca..d56cc000a 100644 --- a/src/components/auth/Auth.tsx +++ b/src/components/auth/Auth.tsx @@ -1,15 +1,15 @@ import '../../global/actions/initial'; import type { FC } from '../../lib/teact/teact'; -import { memo, useRef } from '../../lib/teact/teact'; +import { memo } from '../../lib/teact/teact'; import { getActions, withGlobal } from '../../global'; import type { GlobalState } from '../../global/types'; -import { PLATFORM_ENV } from '../../util/browser/windowEnvironment'; +import { IS_TAURI } from '../../util/browser/globalEnvironment'; +import { IS_MAC_OS, PLATFORM_ENV } from '../../util/browser/windowEnvironment'; import useCurrentOrPrev from '../../hooks/useCurrentOrPrev'; -import useElectronDrag from '../../hooks/useElectronDrag'; import useHistoryBack from '../../hooks/useHistoryBack'; import Transition from '../ui/Transition'; @@ -46,9 +46,6 @@ const Auth: FC = ({ onBack: handleChangeAuthorizationMethod, }); - const containerRef = useRef(); - useElectronDrag(containerRef); - // For animation purposes const renderingAuthState = useCurrentOrPrev( authState !== 'authorizationStateReady' ? authState : undefined, @@ -90,7 +87,12 @@ const Auth: FC = ({ } return ( - + {getScreen()} ); diff --git a/src/components/auth/CountryCodeInput.tsx b/src/components/auth/CountryCodeInput.tsx index dda1bc6d6..90f68e21d 100644 --- a/src/components/auth/CountryCodeInput.tsx +++ b/src/components/auth/CountryCodeInput.tsx @@ -8,6 +8,7 @@ import { withGlobal } from '../../global'; import type { ApiCountryCode } from '../../api/types'; import { ANIMATION_END_DELAY } from '../../config'; +import { IS_TAURI } from '../../util/browser/globalEnvironment'; import { IS_EMOJI_SUPPORTED } from '../../util/browser/windowEnvironment'; import buildClassName from '../../util/buildClassName'; import { isoToEmoji } from '../../util/emoji/emoji'; @@ -118,6 +119,7 @@ const CountryCodeInput: FC = ({ id={id} value={inputValue} autoComplete="off" + spellCheck={IS_TAURI ? false : undefined} onClick={handleTrigger} onFocus={handleTrigger} onInput={handleCodeInput} diff --git a/src/components/calls/ActiveCallHeader.tsx b/src/components/calls/ActiveCallHeader.tsx index 3a61e7c20..72445ce93 100644 --- a/src/components/calls/ActiveCallHeader.tsx +++ b/src/components/calls/ActiveCallHeader.tsx @@ -29,12 +29,11 @@ const ActiveCallHeader: FC = ({ useEffect(() => { document.body.classList.toggle('has-call-header', Boolean(isCallPanelVisible)); - const updateButtonPosition = window.electron?.setWindowButtonsPosition || window.electron?.setTrafficLightPosition; - updateButtonPosition?.(isCallPanelVisible ? 'lowered' : 'standard'); + window.tauri?.markTitleBarOverlay(!isCallPanelVisible); return () => { document.body.classList.toggle('has-call-header', false); - updateButtonPosition?.('standard'); + window.tauri?.markTitleBarOverlay(true); }; }, [isCallPanelVisible]); diff --git a/src/components/calls/group/GroupCall.module.scss b/src/components/calls/group/GroupCall.module.scss index b9eb154a7..4b778aadd 100644 --- a/src/components/calls/group/GroupCall.module.scss +++ b/src/components/calls/group/GroupCall.module.scss @@ -89,8 +89,8 @@ border-bottom-color: var(--group-call-panel-header-border-color); } - :global(body.is-electron) .root.fullscreen:not(.landscape) & { - padding-left: 5rem; + :global(body.is-tauri) .root.fullscreen:not(.landscape) & { + padding-left: var(--window-controls-width); } } @@ -174,8 +174,8 @@ align-items: center; padding: 0.375rem 0.875rem; - :global(body.is-electron) .root:not(.appFullscreen) & { - padding-left: 5rem; + :global(body.is-tauri) .root:not(.appFullscreen) & { + padding-left: var(--window-controls-width); } } diff --git a/src/components/calls/phone/PhoneCall.module.scss b/src/components/calls/phone/PhoneCall.module.scss index f3100f7ec..6bd8e5c98 100644 --- a/src/components/calls/phone/PhoneCall.module.scss +++ b/src/components/calls/phone/PhoneCall.module.scss @@ -63,8 +63,8 @@ color: #fff; } - :global(body.is-electron) .root.single-column & { - padding-left: 5rem; + :global(body.is-tauri) .root.single-column & { + padding-left: var(--window-controls-width); } } diff --git a/src/components/common/AnimatedSticker.tsx b/src/components/common/AnimatedSticker.tsx index 6347dd3b0..6c6a1ea0e 100644 --- a/src/components/common/AnimatedSticker.tsx +++ b/src/components/common/AnimatedSticker.tsx @@ -12,7 +12,7 @@ import type RLottieInstance from '../../lib/rlottie/RLottie'; import { requestMeasure } from '../../lib/fasterdom/fasterdom'; import { ensureRLottie, getRLottie } from '../../lib/rlottie/RLottie.async'; -import { IS_ELECTRON } from '../../util/browser/windowEnvironment'; +import { IS_TAURI } from '../../util/browser/globalEnvironment'; import buildClassName from '../../util/buildClassName'; import buildStyle from '../../util/buildStyle'; import generateUniqueId from '../../util/generateUniqueId'; @@ -276,7 +276,7 @@ const AnimatedSticker: FC = ({ className={buildClassName('AnimatedSticker', className)} style={buildStyle( size !== undefined && `width: ${size}px; height: ${size}px;`, - onClick && !IS_ELECTRON && 'cursor: pointer', + onClick && !IS_TAURI && 'cursor: pointer', colorFilter, style, )} diff --git a/src/components/common/PasswordForm.tsx b/src/components/common/PasswordForm.tsx index e0edfed34..907b3fa35 100644 --- a/src/components/common/PasswordForm.tsx +++ b/src/components/common/PasswordForm.tsx @@ -7,6 +7,7 @@ import { import { MIN_PASSWORD_LENGTH } from '../../config'; import { requestMutation } from '../../lib/fasterdom/fasterdom'; +import { IS_TAURI } from '../../util/browser/globalEnvironment'; import { IS_TOUCH_ENV } from '../../util/browser/windowEnvironment'; import buildClassName from '../../util/buildClassName'; import stopEvent from '../../util/stopEvent'; @@ -138,6 +139,7 @@ const PasswordForm: FC = ({ id="sign-in-password" value={password || ''} autoComplete={shouldDisablePasswordManager ? 'one-time-code' : 'current-password'} + spellCheck={IS_TAURI ? false : undefined} onChange={onPasswordChange} maxLength={256} dir="auto" diff --git a/src/components/common/SafeLink.tsx b/src/components/common/SafeLink.tsx index 2397b5be8..a31dcd21c 100644 --- a/src/components/common/SafeLink.tsx +++ b/src/components/common/SafeLink.tsx @@ -1,10 +1,10 @@ import type { TeactNode } from '../../lib/teact/teact'; -import type React from '../../lib/teact/teact'; import { getActions } from '../../global'; import type { ThreadId } from '../../types'; import { ApiMessageEntityTypes } from '../../api/types'; +import { IS_TAURI } from '../../util/browser/globalEnvironment'; import { ensureProtocol, getUnicodeUrl, isMixedScriptUrl } from '../../util/browser/url'; import buildClassName from '../../util/buildClassName'; @@ -68,7 +68,7 @@ const SafeLink = ({ (undefined); const startedInteractions = useRef(undefined); diff --git a/src/components/left/LeftColumn.scss b/src/components/left/LeftColumn.scss index 9ee6da32c..9e73abfe3 100644 --- a/src/components/left/LeftColumn.scss +++ b/src/components/left/LeftColumn.scss @@ -45,15 +45,7 @@ } } - body.is-electron.is-macos & { - -webkit-app-region: drag; - - .SearchInput { - -webkit-app-region: no-drag; - } - } - - body.is-electron.is-macos #Main:not(.is-fullscreen) &:not(#TopicListHeader) { + body.is-tauri.is-macos #Main:not(.is-fullscreen) &:not(#TopicListHeader) { justify-content: space-between; padding: 0.5rem 0.5rem 0.5rem 4.5rem; diff --git a/src/components/left/LeftColumn.tsx b/src/components/left/LeftColumn.tsx index f3894b536..e019bbfa2 100644 --- a/src/components/left/LeftColumn.tsx +++ b/src/components/left/LeftColumn.tsx @@ -53,7 +53,6 @@ type StateProps = { nextFoldersAction?: ReducerAction; isChatOpen: boolean; isAppUpdateAvailable?: boolean; - isElectronUpdateAvailable?: boolean; isForumPanelOpen?: boolean; forumPanelChatId?: string; isClosingSearch?: boolean; @@ -90,7 +89,6 @@ function LeftColumn({ nextFoldersAction, isChatOpen, isAppUpdateAvailable, - isElectronUpdateAvailable, isForumPanelOpen, forumPanelChatId, isClosingSearch, @@ -539,7 +537,6 @@ function LeftColumn({ onReset={handleReset} shouldSkipTransition={shouldSkipHistoryAnimations} isAppUpdateAvailable={isAppUpdateAvailable} - isElectronUpdateAvailable={isElectronUpdateAvailable} isForumPanelOpen={isForumPanelOpen} onTopicSearch={handleTopicSearch} isAccountFrozen={isAccountFrozen} @@ -588,7 +585,6 @@ export default memo(withGlobal( hasPasscode, }, isAppUpdateAvailable, - isElectronUpdateAvailable, archiveSettings, } = global; @@ -610,7 +606,6 @@ export default memo(withGlobal( nextFoldersAction, isChatOpen, isAppUpdateAvailable, - isElectronUpdateAvailable, isForumPanelOpen, forumPanelChatId, isClosingSearch: tabState.globalSearch.isClosing, diff --git a/src/components/left/main/ChatTags.module.scss b/src/components/left/main/ChatTags.module.scss index 4de26fd0d..6d13e070b 100644 --- a/src/components/left/main/ChatTags.module.scss +++ b/src/components/left/main/ChatTags.module.scss @@ -21,7 +21,7 @@ font-size: 0.625rem; font-weight: var(--font-weight-medium); - line-height: 0.75rem; + line-height: 0.875rem; color: var(--accent-color); text-align: center; text-transform: uppercase; diff --git a/src/components/left/main/LeftMain.tsx b/src/components/left/main/LeftMain.tsx index e4528bfe3..dbbe8c89c 100644 --- a/src/components/left/main/LeftMain.tsx +++ b/src/components/left/main/LeftMain.tsx @@ -1,3 +1,4 @@ +import type { Update } from '@tauri-apps/plugin-updater'; import type { FC } from '../../../lib/teact/teact'; import { memo, useEffect, useRef, useState, @@ -7,10 +8,12 @@ import { getActions } from '../../../global'; import type { FolderEditDispatch } from '../../../hooks/reducers/useFoldersReducer'; import { LeftColumnContent } from '../../../types'; -import { PRODUCTION_URL } from '../../../config'; -import { IS_ELECTRON, IS_TOUCH_ENV } from '../../../util/browser/windowEnvironment'; +import { DEBUG } from '../../../config'; +import { IS_TAURI } from '../../../util/browser/globalEnvironment'; +import { IS_TOUCH_ENV } from '../../../util/browser/windowEnvironment'; import buildClassName from '../../../util/buildClassName'; +import useInterval from '../../../hooks/schedulers/useInterval'; import useForumPanelRender from '../../../hooks/useForumPanelRender'; import useLastCallback from '../../../hooks/useLastCallback'; import useOldLang from '../../../hooks/useOldLang'; @@ -35,7 +38,6 @@ type OwnProps = { shouldSkipTransition?: boolean; foldersDispatch: FolderEditDispatch; isAppUpdateAvailable?: boolean; - isElectronUpdateAvailable?: boolean; isForumPanelOpen?: boolean; isClosingSearch?: boolean; onSearchQuery: (query: string) => void; @@ -46,6 +48,7 @@ type OwnProps = { const TRANSITION_RENDER_COUNT = Object.keys(LeftColumnContent).length / 2; const BUTTON_CLOSE_DELAY_MS = 250; +const TAURI_CHECK_UPDATE_INTERVAL = 10 * 60 * 1000; let closeTimeout: number | undefined; @@ -58,7 +61,6 @@ const LeftMain: FC = ({ shouldSkipTransition, foldersDispatch, isAppUpdateAvailable, - isElectronUpdateAvailable, isForumPanelOpen, onSearchQuery, onReset, @@ -67,11 +69,8 @@ const LeftMain: FC = ({ }) => { const { closeForumPanel, openLeftColumnContent } = getActions(); const [isNewChatButtonShown, setIsNewChatButtonShown] = useState(IS_TOUCH_ENV); - const [isElectronAutoUpdateEnabled, setIsElectronAutoUpdateEnabled] = useState(false); - - useEffect(() => { - window.electron?.getIsAutoUpdateEnabled().then(setIsElectronAutoUpdateEnabled); - }, []); + const [tauriUpdate, setTauriUpdate] = useState(); + const [isTauriUpdateDownloading, setIsTauriUpdateDownloading] = useState(false); const { shouldRenderForumPanel, handleForumPanelAnimationEnd, @@ -83,7 +82,7 @@ const LeftMain: FC = ({ const { shouldRender: shouldRenderUpdateButton, transitionClassNames: updateButtonClassNames, - } = useShowTransitionDeprecated(isAppUpdateAvailable || isElectronUpdateAvailable); + } = useShowTransitionDeprecated(isAppUpdateAvailable || Boolean(tauriUpdate)); const isMouseInside = useRef(false); @@ -123,11 +122,20 @@ const LeftMain: FC = ({ closeForumPanel(); }); - const handleUpdateClick = useLastCallback(() => { - if (IS_ELECTRON && !isElectronAutoUpdateEnabled) { - window.open(`${PRODUCTION_URL}/get`, '_blank', 'noopener'); - } else if (isElectronUpdateAvailable) { - window.electron?.installUpdate(); + const handleUpdateClick = useLastCallback(async () => { + if (tauriUpdate) { + try { + setIsTauriUpdateDownloading(true); + await tauriUpdate.downloadAndInstall(); + setIsTauriUpdateDownloading(false); + + await window.tauri?.relaunch(); + } catch (e) { + // eslint-disable-next-line no-console + console.error('Failed to download and install Tauri update', e); + } finally { + setIsTauriUpdateDownloading(false); + } } else { window.location.reload(); } @@ -159,6 +167,24 @@ const LeftMain: FC = ({ }; }, [content]); + const checkTauriUpdate = useLastCallback(() => { + window.tauri?.checkUpdate() + .then((update) => setTauriUpdate(update ?? undefined)) + .catch((e) => { + // eslint-disable-next-line no-console + console.error('Tauri update check failed:', e); + }); + }); + + useEffect(() => { + checkTauriUpdate(); + }, []); + + useInterval( + checkTauriUpdate, + (IS_TAURI && !DEBUG) ? TAURI_CHECK_UPDATE_INTERVAL : undefined, + ); + const lang = useOldLang(); return ( @@ -220,6 +246,7 @@ const LeftMain: FC = ({ badge className={buildClassName('btn-update', updateButtonClassNames)} onClick={handleUpdateClick} + isLoading={isTauriUpdateDownloading} > {lang('lng_update_telegram')} diff --git a/src/components/left/main/LeftMainHeader.scss b/src/components/left/main/LeftMainHeader.scss index 4f75235c6..29088b7f5 100644 --- a/src/components/left/main/LeftMainHeader.scss +++ b/src/components/left/main/LeftMainHeader.scss @@ -108,7 +108,7 @@ position: relative; margin-left: 0.8125rem; - body.is-electron.is-macos #Main:not(.is-fullscreen) & { + body.is-tauri.is-macos #Main:not(.is-fullscreen) & { margin-left: 0.5rem; } } diff --git a/src/components/left/main/LeftMainHeader.tsx b/src/components/left/main/LeftMainHeader.tsx index 26d437a45..305a16078 100644 --- a/src/components/left/main/LeftMainHeader.tsx +++ b/src/components/left/main/LeftMainHeader.tsx @@ -1,6 +1,6 @@ import type { FC } from '../../../lib/teact/teact'; import { - memo, useEffect, useMemo, useRef, + memo, useEffect, useMemo, } from '../../../lib/teact/teact'; import { getActions, withGlobal } from '../../../global'; @@ -21,14 +21,14 @@ import { selectTheme, } from '../../../global/selectors'; import { selectSharedSettings } from '../../../global/selectors/sharedState'; -import { IS_APP, IS_ELECTRON, IS_MAC_OS } from '../../../util/browser/windowEnvironment'; +import { IS_TAURI } from '../../../util/browser/globalEnvironment'; +import { IS_APP, IS_MAC_OS } from '../../../util/browser/windowEnvironment'; import buildClassName from '../../../util/buildClassName'; import captureEscKeyListener from '../../../util/captureEscKeyListener'; import { formatDateToString } from '../../../util/dates/dateFormat'; import useAppLayout from '../../../hooks/useAppLayout'; import useConnectionStatus from '../../../hooks/useConnectionStatus'; -import useElectronDrag from '../../../hooks/useElectronDrag'; import useFlag from '../../../hooks/useFlag'; import { useHotkeys } from '../../../hooks/useHotkeys'; import useLang from '../../../hooks/useLang'; @@ -225,11 +225,7 @@ const LeftMainHeader: FC = ({ handleDropdownMenuTransitionEnd, } = useLeftHeaderButtonRtlForumTransition(shouldHideSearch); - const headerRef = useRef(); - useElectronDrag(headerRef); - - const withStoryToggler = !isSearchFocused - && !selectedSearchDate && !globalSearchChatId && !areContactsVisible; + const withStoryToggler = !isSearchFocused && !selectedSearchDate && !globalSearchChatId && !areContactsVisible; const searchContent = useMemo(() => { return ( @@ -260,13 +256,28 @@ const LeftMainHeader: FC = ({ ); }, [globalSearchChatId, selectedSearchDate]); + const version = useMemo(() => { + let version = ''; + if (IS_TAURI && window.tauri.version) { + version = `Tauri ${window.tauri.version} | `; + } + + version += `${APP_NAME} ${versionString}`; + + return version; + }, [versionString]); + return (

-
+
{oldLang.isRtl &&
} = ({ )} forceOpen={isBotMenuOpen} positionX={shouldHideSearch && oldLang.isRtl ? 'right' : 'left'} - transformOriginX={IS_ELECTRON && IS_MAC_OS && !isFullscreen ? 90 : undefined} + transformOriginX={IS_TAURI && IS_MAC_OS && !isFullscreen ? 90 : undefined} onTransitionEnd={oldLang.isRtl ? handleDropdownMenuTransitionEnd : undefined} > { - window.open(BETA_CHANGELOG_URL, '_blank', 'noopener'); + window.open(BETA_CHANGELOG_URL, '_blank', 'noopener,noreferrer'); }); const handleSwitchToWebK = useLastCallback(() => { diff --git a/src/components/left/settings/SettingsExperimental.tsx b/src/components/left/settings/SettingsExperimental.tsx index 5e5f1548e..58841c5d6 100644 --- a/src/components/left/settings/SettingsExperimental.tsx +++ b/src/components/left/settings/SettingsExperimental.tsx @@ -1,23 +1,22 @@ -import type { FC } from '../../../lib/teact/teact'; -import type React from '../../../lib/teact/teact'; import { - memo, useCallback, useEffect, useRef, useState, + memo, useMemo, useRef, useState, } from '../../../lib/teact/teact'; import { getActions, withGlobal } from '../../../global'; import { DEBUG_LOG_FILENAME } from '../../../config'; import { selectSharedSettings } from '../../../global/selectors/sharedState'; import { - IS_ELECTRON, IS_SNAP_EFFECT_SUPPORTED, IS_WAVE_TRANSFORM_SUPPORTED, } from '../../../util/browser/windowEnvironment'; import { getDebugLogs } from '../../../util/debugConsole'; import download from '../../../util/download'; +import { getAccountSlotUrl } from '../../../util/multiaccount'; import { LOCAL_TGS_URLS } from '../../common/helpers/animatedAssets'; import useHistoryBack from '../../../hooks/useHistoryBack'; import useLastCallback from '../../../hooks/useLastCallback'; +import useMultiaccountInfo from '../../../hooks/useMultiaccountInfo'; import useOldLang from '../../../hooks/useOldLang'; import AnimatedIconWithPreview from '../../common/AnimatedIconWithPreview'; @@ -37,14 +36,14 @@ type StateProps = { shouldDebugExportedSenders?: boolean; }; -const SettingsExperimental: FC = ({ +const SettingsExperimental = ({ isActive, - onReset, shouldForceHttpTransport, shouldAllowHttpTransport, shouldCollectDebugLogs, shouldDebugExportedSenders, -}) => { + onReset, +}: OwnProps & StateProps) => { const { requestConfetti, setSharedSettingOption, requestWave } = getActions(); const snapButtonRef = useRef(); @@ -52,10 +51,7 @@ const SettingsExperimental: FC = ({ const lang = useOldLang(); - const [isAutoUpdateEnabled, setIsAutoUpdateEnabled] = useState(false); - useEffect(() => { - window.electron?.getIsAutoUpdateEnabled().then(setIsAutoUpdateEnabled); - }, []); + const accounts = useMultiaccountInfo(); useHistoryBack({ isActive, @@ -68,10 +64,6 @@ const SettingsExperimental: FC = ({ download(url, DEBUG_LOG_FILENAME); }); - const handleIsAutoUpdateEnabledChange = useCallback((isChecked: boolean) => { - window.electron?.setIsAutoUpdateEnabled(isChecked); - }, []); - const handleRequestWave = useLastCallback((e: React.MouseEvent) => { requestWave({ startX: e.clientX, startY: e.clientY }); }); @@ -93,6 +85,19 @@ const SettingsExperimental: FC = ({ } }); + const newAccountUrl = useMemo(() => { + if (!Object.values(accounts).length) { + return undefined; + } + + let freeIndex = 1; + while (accounts[freeIndex]) { + freeIndex += 1; + } + + return getAccountSlotUrl(freeIndex, true, true); + }, [accounts]); + return (
@@ -105,6 +110,14 @@ const SettingsExperimental: FC = ({ />

{lang('lng_settings_experimental_about')}

+
+ +
Login on Test Server
+
+
= ({ >
Vaporize this button
- +
+
= ({ onCheck={() => setSharedSettingOption({ shouldForceHttpTransport: !shouldForceHttpTransport })} /> - +
+
= ({ onCheck={() => setSharedSettingOption({ shouldDebugExportedSenders: !shouldDebugExportedSenders })} /> - {IS_ELECTRON && ( - - )} - = ({ setSharedSettingOption({ messageSendKeyCombo: newCombo as SharedSettings['messageSendKeyCombo'] }); }, []); - const [isTrayIconEnabled, setIsTrayIconEnabled] = useState(false); - useEffect(() => { - window.electron?.getIsTrayIconEnabled().then(setIsTrayIconEnabled); - }, []); - - const handleIsTrayIconEnabledChange = useCallback((isChecked: boolean) => { - window.electron?.setIsTrayIconEnabled(isChecked); - }, []); - useHistoryBack({ isActive, onBack: onReset, @@ -149,14 +139,6 @@ const SettingsGeneral: FC = ({ > {lang('ChatBackground')} - - {IS_ELECTRON && IS_WINDOWS && ( - - )}
diff --git a/src/components/main/Main.tsx b/src/components/main/Main.tsx index 6945139aa..1e5d8570e 100644 --- a/src/components/main/Main.tsx +++ b/src/components/main/Main.tsx @@ -10,7 +10,6 @@ import { getActions, getGlobal, withGlobal } from '../../global'; import type { ApiChatFolder, ApiLimitTypeWithModal, ApiUser } from '../../api/types'; import type { TabState } from '../../global/types'; -import { ElectronEvent } from '../../types/electron'; import { BASE_EMOJI_KEYWORD_LANG, DEBUG, INACTIVE_MARKER } from '../../config'; import { requestNextMutation } from '../../lib/fasterdom/fasterdom'; @@ -32,7 +31,8 @@ import { selectUser, } from '../../global/selectors'; import { selectSharedSettings } from '../../global/selectors/sharedState'; -import { IS_ANDROID, IS_ELECTRON, IS_WAVE_TRANSFORM_SUPPORTED } from '../../util/browser/windowEnvironment'; +import { IS_TAURI } from '../../util/browser/globalEnvironment'; +import { IS_ANDROID, IS_WAVE_TRANSFORM_SUPPORTED } from '../../util/browser/windowEnvironment'; import buildClassName from '../../util/buildClassName'; import { waitForTransitionEnd } from '../../util/cssAnimationEndListeners'; import { processDeepLink } from '../../util/deeplink'; @@ -42,6 +42,7 @@ import updateIcon from '../../util/updateIcon'; import useInterval from '../../hooks/schedulers/useInterval'; import useTimeout from '../../hooks/schedulers/useTimeout'; +import useTauriEvent from '../../hooks/tauri/useTauriEvent'; import useAppLayout from '../../hooks/useAppLayout'; import useForceUpdate from '../../hooks/useForceUpdate'; import useLang from '../../hooks/useLang'; @@ -242,7 +243,6 @@ const Main = ({ loadRecentReactions, loadDefaultTagReactions, loadFeaturedEmojiStickers, - setIsElectronUpdateAvailable, loadAuthorizations, loadPeerColors, loadSavedReactionTags, @@ -289,26 +289,6 @@ const Main = ({ useInterval(checkAppVersion, isMasterTab ? APP_OUTDATED_TIMEOUT_MS : undefined, true); - useEffect(() => { - if (!IS_ELECTRON) { - return undefined; - } - - const removeUpdateAvailableListener = window.electron!.on(ElectronEvent.UPDATE_AVAILABLE, () => { - setIsElectronUpdateAvailable({ isAvailable: true }); - }); - - const removeUpdateErrorListener = window.electron!.on(ElectronEvent.UPDATE_ERROR, () => { - setIsElectronUpdateAvailable({ isAvailable: false }); - removeUpdateAvailableListener?.(); - }); - - return () => { - removeUpdateErrorListener?.(); - removeUpdateAvailableListener?.(); - }; - }, []); - // Initial API calls useEffect(() => { if (isMasterTab && isSynced) { @@ -432,11 +412,18 @@ const Main = ({ } }, [isSynced]); - useEffect(() => { - return window.electron?.on(ElectronEvent.DEEPLINK, (link: string) => { - processDeepLink(decodeURIComponent(link)); - }); - }, []); + useTauriEvent('deeplink', (event) => { + try { + const url = event.payload || ''; + const decodedUrl = decodeURIComponent(url); + processDeepLink(decodedUrl); + } catch (e) { + if (DEBUG) { + // eslint-disable-next-line no-console + console.error('Failed to process deep link', e); + } + } + }); useEffect(() => { const parsedLocationHash = parseLocationHash(currentUserId); @@ -554,7 +541,7 @@ const Main = ({ }); // Online status and browser tab indicators - useBackgroundMode(handleBlur, handleFocus, Boolean(IS_ELECTRON)); + useBackgroundMode(handleBlur, handleFocus, IS_TAURI); useBeforeUnload(handleBlur); usePreventPinchZoomGesture(isMediaViewerOpen || isStoryViewerOpen); diff --git a/src/components/mediaViewer/MediaViewer.scss b/src/components/mediaViewer/MediaViewer.scss index 464a1fdb1..8881a7598 100644 --- a/src/components/mediaViewer/MediaViewer.scss +++ b/src/components/mediaViewer/MediaViewer.scss @@ -84,12 +84,8 @@ min-width: 0; } - body.is-electron.is-macos & { - -webkit-app-region: drag; - } - - body.is-electron.is-macos #Main:not(.is-fullscreen) & { - padding-left: 5rem; + body.is-tauri.is-macos #Main:not(.is-fullscreen) & { + padding-left: var(--window-controls-width); } @media (max-width: 600px) { diff --git a/src/components/mediaViewer/MediaViewer.tsx b/src/components/mediaViewer/MediaViewer.tsx index 54a4872e1..1d8fae4b9 100644 --- a/src/components/mediaViewer/MediaViewer.tsx +++ b/src/components/mediaViewer/MediaViewer.tsx @@ -36,6 +36,8 @@ import { selectTabState, } from '../../global/selectors'; import { stopCurrentAudio } from '../../util/audioPlayer'; +import { IS_TAURI } from '../../util/browser/globalEnvironment'; +import { IS_MAC_OS } from '../../util/browser/windowEnvironment'; import captureEscKeyListener from '../../util/captureEscKeyListener'; import { disableDirectTextInput, enableDirectTextInput } from '../../util/directInputManager'; import { isUserId } from '../../util/entities/ids'; @@ -46,7 +48,6 @@ import selectViewableMedia from './helpers/getViewableMedia'; import { animateClosing, animateOpening } from './helpers/ghostAnimation'; import useAppLayout from '../../hooks/useAppLayout'; -import useElectronDrag from '../../hooks/useElectronDrag'; import useFlag from '../../hooks/useFlag'; import useForceUpdate from '../../hooks/useForceUpdate'; import useLastCallback from '../../hooks/useLastCallback'; @@ -209,9 +210,6 @@ const MediaViewer = ({ } }, [isMobile, isOpen]); - const headerRef = useRef(); - useElectronDrag(headerRef); - const forceUpdate = useForceUpdate(); useEffect(() => { const mql = window.matchMedia(MEDIA_VIEWER_MEDIA_QUERY); @@ -422,7 +420,11 @@ const MediaViewer = ({ shouldAnimateFirstRender noCloseTransition={shouldSkipHistoryAnimations} > -
+
{isMobile && (