diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 1b4142030..caa7a77f2 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -5,7 +5,7 @@ name: CI workflow_dispatch: push: branches: - - "ci-*" + - 'ci-*' pull_request: types: - opened @@ -21,37 +21,35 @@ concurrency: permissions: {} jobs: - clippy: - name: clippy - runs-on: [ ubuntu-latest ] + cargo-checks: + name: cargo checks (fmt, clippy, check) + runs-on: ubuntu-latest steps: - - name: checkout - uses: actions/checkout@v4 - - - name: created empty dist dir + - uses: actions/checkout@v4 + - name: create empty dist dir run: | mkdir dist - - name: install dependencies (linux) - if: startsWith(runner.os,'Linux') run: | sudo apt-get update sudo apt-get install --no-install-recommends --assume-yes \ - libwebkit2gtk-4.0-dev \ + libwebkit2gtk-4.1-dev \ libappindicator3-dev \ librsvg2-dev \ patchelf \ libprotobuf-dev \ protobuf-compiler - - name: toolchain - uses: dtolnay/rust-toolchain@stable + - name: install dependencies (linux/OpenCL) + run: | + sudo apt-get install --no-install-recommends --assume-yes \ + opencl-headers \ + ocl-icd-opencl-dev + + - uses: dtolnay/rust-toolchain@stable with: components: clippy, rustfmt - - - name: cache cargo files and outputs - if: ${{ ( startsWith(runner.environment,'github-hosted') ) && ( ! startsWith(github.ref, 'refs/tags/v') ) }} - uses: swatinem/rust-cache@v2 + - uses: swatinem/rust-cache@v2.7.5 with: workspaces: './src-tauri -> target' @@ -60,7 +58,7 @@ jobs: run: | cargo fmt --all -- --check - - name: clippy check (with lints) + - name: clippy lint working-directory: ./src-tauri env: AIRDROP_BASE_URL: http://localhost:4000 @@ -69,22 +67,18 @@ jobs: run: | cargo install cargo-lints cargo lints clippy --all-targets --all-features + - name: cargo check + working-directory: ./src-tauri + run: | + cargo check --release --all-targets --workspace machete: name: machete - runs-on: [ ubuntu-latest ] + runs-on: ubuntu-latest steps: - - name: checkout - uses: actions/checkout@v4 - - - name: toolchain - uses: dtolnay/rust-toolchain@stable - with: - components: clippy, rustfmt - - - name: cache cargo files and outputs - if: ${{ ( startsWith(runner.environment,'github-hosted') ) && ( ! startsWith(github.ref, 'refs/tags/v') ) }} - uses: swatinem/rust-cache@v2 + - uses: actions/checkout@v4 + - uses: dtolnay/rust-toolchain@stable + - uses: swatinem/rust-cache@v2.7.5 with: workspaces: './src-tauri -> target' @@ -94,46 +88,50 @@ jobs: cargo install cargo-machete cargo machete - cargo-check: - name: cargo-check - runs-on: [ ubuntu-latest ] + tauri-test-build: + name: tauri-build + runs-on: ubuntu-latest steps: - - name: checkout - uses: actions/checkout@v4 - + - uses: actions/checkout@v4 - name: install dependencies (linux) - if: startsWith(runner.os,'Linux') run: | sudo apt-get update sudo apt-get install --no-install-recommends --assume-yes \ - libwebkit2gtk-4.0-dev \ + libwebkit2gtk-4.1-dev \ libappindicator3-dev \ librsvg2-dev \ patchelf \ libprotobuf-dev \ protobuf-compiler - - name: toolchain - uses: dtolnay/rust-toolchain@stable - with: - components: clippy, rustfmt + - name: install dependencies (linux/OpenCL) + run: | + sudo apt-get install --no-install-recommends --assume-yes \ + opencl-headers \ + ocl-icd-opencl-dev - - name: cache cargo files and outputs - if: ${{ ( startsWith(runner.environment,'github-hosted') ) && ( ! startsWith(github.ref, 'refs/tags/v') ) }} - uses: swatinem/rust-cache@v2 + - uses: actions/setup-node@v4 + with: + node-version: lts/* + cache: 'npm' + - name: Install dependencies (node) + run: npm ci + - uses: dtolnay/rust-toolchain@stable + - uses: swatinem/rust-cache@v2.7.5 with: workspaces: './src-tauri -> target' - - - name: cargo check + - name: cargo tauri build working-directory: ./src-tauri run: | - cargo check --release --all-targets --workspace --locked + cargo install tauri-cli --version "^2" --locked + cargo tauri --version + cargo tauri build --ci --bundles deb file-licenses: # disable for now if: ${{ false }} name: file-licenses - runs-on: [ ubuntu-latest ] + runs-on: ubuntu-latest steps: - name: checkout uses: actions/checkout@v4 @@ -145,102 +143,3 @@ jobs: rg --version || exit 1 - name: run the license check run: ./scripts/file_license_check.sh - - i18n-checks: - name: i18n-checks - runs-on: [ ubuntu-latest ] - steps: - - name: checkout - uses: actions/checkout@v4 - - - name: install jsonlint - run: | - sudo apt-get update - sudo apt-get install --no-install-recommends --assume-yes \ - python3-demjson - - - name: basic jsonlint - run: | - find public -iname '*.json' -print0 | \ - xargs -0 -n1 jsonlint -v - - - name: setup folder for logs - run: | - mkdir -p ${{ runner.temp }}/i18n_logs - - - name: i18n compare - continue-on-error: true - working-directory: ./public/locales - run: | - python3 ../../scripts/i18n_checker.py \ - compare --en-locale-path en \ - --base-path . \ - --search-path .. \ - --output-dir ${{ runner.temp }}/i18n_logs - - - name: i18n unused - continue-on-error: true - working-directory: ./public/locales - run: | - python3 ../../scripts/i18n_checker.py \ - unused --en-locale-path en \ - --base-path . \ - --search-path .. \ - --output-dir ${{ runner.temp }}/i18n_logs - - - name: Artifact upload for i18n checks - uses: actions/upload-artifact@v4 - with: - name: i18n-logs - path: ${{ runner.temp }}/i18n_logs - - tauri-build: - name: tauri-build - runs-on: [ ubuntu-latest ] - steps: - - name: checkout - uses: actions/checkout@v4 - - - name: install dependencies (linux) - run: | - sudo apt-get update - sudo apt-get install --no-install-recommends --assume-yes \ - libwebkit2gtk-4.0-dev \ - libappindicator3-dev \ - librsvg2-dev \ - patchelf \ - libprotobuf-dev \ - protobuf-compiler - - - name: install dependencies (linux/OpenCL) - run: | - sudo apt-get install --no-install-recommends --assume-yes \ - opencl-headers \ - ocl-icd-opencl-dev - - - name: Node.js setup - uses: actions/setup-node@v4 - with: - node-version: lts/* - cache: 'npm' - - - name: Install dependencies (node) - run: | - npm --version - npm install - - - name: toolchain - uses: dtolnay/rust-toolchain@stable - - - name: cache cargo files and outputs - if: ${{ ( startsWith(runner.environment,'github-hosted') ) && ( ! startsWith(github.ref, 'refs/tags/v') ) }} - uses: swatinem/rust-cache@v2 - with: - workspaces: './src-tauri -> target' - - - name: cargo tauri build - working-directory: ./src-tauri - run: | - cargo install tauri-cli --version "1.6.4" - cargo tauri --version - cargo tauri build --ci --bundles deb diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml index ece92cf77..0bdff66c1 100644 --- a/.github/workflows/lint.yml +++ b/.github/workflows/lint.yml @@ -2,20 +2,18 @@ name: Lint on: pull_request jobs: - run-linters: - name: Run linters - runs-on: ubuntu-latest - - steps: - - name: Check out Git repository - uses: actions/checkout@v4 - - name: Set up Node.js - uses: actions/setup-node@v4 - with: - node-version: lts/* - - name: Install Node.js dependencies - run: npm ci - - name: check lint/prettier errors - run: npm run lint - - name: check taplo - run: npm run lint:taplo \ No newline at end of file + run-linters: + name: Run linters + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - uses: actions/setup-node@v4 + with: + cache: 'npm' + node-version: lts/* + - name: Install Node.js dependencies + run: npm ci + - name: check lint/prettier errors + run: npm run lint + - name: check taplo + run: npm run lint:taplo diff --git a/.github/workflows/pr.yml b/.github/workflows/pr.yml new file mode 100644 index 000000000..c55755291 --- /dev/null +++ b/.github/workflows/pr.yml @@ -0,0 +1,83 @@ +--- +name: PR +on: + pull_request: + types: + - opened + - reopened + - edited + - synchronize + +concurrency: + group: '${{ github.workflow }} @ ${{ github.event.pull_request.head.label || github.head_ref || github.ref }}' + cancel-in-progress: ${{ !startsWith(github.ref, 'refs/tags/v') || github.ref != 'refs/heads/development' || github.ref != 'refs/heads/nextnet' || github.ref != 'refs/heads/stagenet' }} + +permissions: {} + +jobs: + check-signed-commits: + name: Check signed commits + runs-on: ubuntu-latest + permissions: + contents: read + pull-requests: write + steps: + - uses: 1Password/check-signed-commits-action@v1 + check-title: + name: Check title + runs-on: ubuntu-latest + steps: + - name: Install Dependencies + run: | + npm install -g @commitlint/cli @commitlint/config-conventional + echo "module.exports = {extends: ['@commitlint/config-conventional']}" > commitlint.config.js + - name: Lint Title + env: + PR_TITLE: ${{github.event.pull_request.title}} + run: | + echo "$PR_TITLE" | commitlint + check-i18n: + name: Check i18n + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - name: Install jsonlint + run: | + sudo apt-get update + sudo apt-get install --no-install-recommends --assume-yes \ + python3-demjson + + - name: Basic jsonlint + run: | + find public -iname '*.json' -print0 | \ + xargs -0 -n1 jsonlint -v + + - name: setup folder for logs + run: | + mkdir -p ${{ runner.temp }}/i18n_logs + + - name: i18n compare + continue-on-error: true + working-directory: ./public/locales + run: | + python3 ../../scripts/i18n_checker.py \ + compare --en-locale-path en \ + --base-path . \ + --search-path .. \ + --output-dir ${{ runner.temp }}/i18n_logs + + - name: i18n unused + continue-on-error: true + working-directory: ./public/locales + run: | + python3 ../../scripts/i18n_checker.py \ + unused --en-locale-path en \ + --base-path . \ + --search-path .. \ + --output-dir ${{ runner.temp }}/i18n_logs + + - name: Artifact upload for i18n checks + uses: actions/upload-artifact@v4 + with: + name: i18n-logs + path: ${{ runner.temp }}/i18n_logs diff --git a/.github/workflows/pr_signed_commits_check.yml b/.github/workflows/pr_signed_commits_check.yml deleted file mode 100644 index 2024a9fb3..000000000 --- a/.github/workflows/pr_signed_commits_check.yml +++ /dev/null @@ -1,19 +0,0 @@ ---- -# Checks if the comments are signed or not -name: PR - Signed commits check - -'on': - pull_request_target - -permissions: {} - -jobs: - check-signed-commits: - name: Check signed commits in PR - runs-on: ubuntu-latest - permissions: - contents: read - pull-requests: write - steps: - - name: Check signed commits in PR - uses: 1Password/check-signed-commits-action@v1 diff --git a/.github/workflows/pr_title.yml b/.github/workflows/pr_title.yml deleted file mode 100644 index 23c0688ed..000000000 --- a/.github/workflows/pr_title.yml +++ /dev/null @@ -1,28 +0,0 @@ ---- -# Checks that PR titles conform to Conventional Commits -# See https://www.conventionalcommits.org/en/v1.0.0/ for more information -name: PR - -'on': - pull_request: - types: - - opened - - reopened - - edited - - synchronize - -permissions: {} - -jobs: - check-title: - runs-on: ubuntu-latest - steps: - - name: install - run: | - npm install -g @commitlint/cli @commitlint/config-conventional - echo "module.exports = {extends: ['@commitlint/config-conventional']}" > commitlint.config.js - - name: lint - env: - PR_TITLE: ${{github.event.pull_request.title}} - run: | - echo "$PR_TITLE" | commitlint diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 9ec5a27ae..e0a96d5b9 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -1,25 +1,22 @@ --- name: Release -'on': +on: push: paths-ignore: - '**/*.md' - # tags: - # - 'v[0-9]+.[0-9]+.[0-9]+' branches: - 'release' - 'beta' - 'build-*' schedule: - - cron: "05 00 * * *" + - cron: '05 00 * * *' workflow_dispatch: concurrency: # https://docs.github.com/en/actions/examples/using-concurrency-expressions-and-a-test-matrix group: '${{ github.workflow }} @ ${{ github.event.pull_request.head.label || github.head_ref || github.ref }}' cancel-in-progress: ${{ !startsWith(github.ref, 'refs/tags/v') || github.ref != 'refs/heads/main' || github.ref != 'refs/heads/release' }} - permissions: {} env: @@ -34,33 +31,29 @@ jobs: fail-fast: false matrix: include: - - platform: 'ubuntu-20.04' + - platform: 'ubuntu-22.04' + args: '' + - platform: 'windows-latest' args: '' - - platform: 'windows-2019' - args: '--bundles msi,updater' - platform: 'macos-latest' args: '--target universal-apple-darwin' - runs-on: ${{ matrix.platform }} steps: - - name: Checkout repository - uses: actions/checkout@v4 - - - name: beta builds - Install dependencies (windows) [yq] + - uses: actions/checkout@v4 + - name: BETA Builds - Install dependencies (windows) [yq] if: ${{ startsWith(runner.os,'Windows') }} run: | choco upgrade yq -y - - - name: beta builds - Install dependencies (linux) [yq] + - name: BETA Builds - Install dependencies (linux) [yq] if: ${{ startsWith(runner.os,'Linux') }} shell: bash run: | sudo bash ./scripts/check-get-yq.sh - - name: Set environment variables for beta builds + - name: BETA Builds - Set environment variables if: ${{ ( github.event_name == 'schedule' ) || ( ! startsWith(github.ref, 'refs/heads/release') ) }} env: - BETA_STRING: "(Beta)" + BETA_STRING: '(Beta)' AIRDROP_BASE_URL: ${{ secrets.BETA_AIRDROP_BASE_URL }} AIRDROP_API_BASE_URL: ${{ secrets.BETA_AIRDROP_API_BASE_URL }} AIRDROP_TWITTER_AUTH_URL: ${{ secrets.BETA_AIRDROP_TWITTER_AUTH_URL }} @@ -73,25 +66,21 @@ jobs: echo "AIRDROP_API_BASE_URL=${{ env.AIRDROP_API_BASE_URL }}" >> $GITHUB_ENV echo "AIRDROP_TWITTER_AUTH_URL=${{ env.AIRDROP_TWITTER_AUTH_URL }}" >> $GITHUB_ENV echo "TS_FEATURES=release-ci-beta, airdrop-env" >> $GITHUB_ENV - #export BETA_DATE=$(date +%Y-%m-%d) # numeric-only and cannot be greater than 65535 for msi target - export BETA_DATE=4$(date +%m%d) + export BETA_DATE=$(date +%m%d) cd "${GITHUB_WORKSPACE}/src-tauri" echo "releaseName=Tari Universe ${{ env.BETA_STRING }} v__VERSION__-${BETA_DATE}" >> $GITHUB_ENV # Don't mess with the double quotes and inner escaped quotes - yq eval ".package.productName = \"Tari Universe ${{ env.BETA_STRING }}\"" -i tauri.conf.json - yq eval ".package.version += \"-${BETA_DATE}\"" -i tauri.conf.json - yq eval ".tauri.windows[0].title = \"Tari Universe ${{ env.BETA_STRING }} | Testnet\"" -i tauri.conf.json - yq eval ".tauri.bundle.identifier = \"com.tari.universe.beta\"" -i tauri.conf.json - yq eval ".tauri.updater.endpoints = [\"https://raw.githubusercontent.com/tari-project/universe/main/.updater/beta-latest.json\"]" \ + yq eval ".productName = \"Tari Universe ${{ env.BETA_STRING }} - ${BETA_DATE} \"" -i tauri.conf.json + yq eval ".mainBinaryName = \"Tari Universe ${{ env.BETA_STRING }} - ${BETA_DATE} \"" -i tauri.conf.json + yq eval ".app.windows[0].title = \"Tari Universe ${{ env.BETA_STRING }} - ${BETA_DATE} | Testnet\"" -i tauri.conf.json + yq eval ".app.windows[1].title = \"Tari Universe ${{ env.BETA_STRING }} - ${BETA_DATE} | Testnet\"" -i tauri.conf.json + yq eval ".identifier = \"com.tari.universe.beta\"" -i tauri.conf.json + yq eval ".plugins.updater.endpoints = [\"https://raw.githubusercontent.com/tari-project/universe/main/.updater/beta-latest.json\"]" \ -i tauri.conf.json cat tauri.conf.json - sed -i.bak -E "s/^version\s*=\s*\"([0-9]+\.[0-9]+\.[0-9]+)\"/version = \"\1-${BETA_DATE}\"/" \ - Cargo.toml - cat Cargo.toml sed -i.bak -e "s/\"icons\//\"beta-icons\//g" tauri.conf.json - - - name: Set environment variables for RELEASE builds + - name: RELEASE Builds - Set environment variables if: ${{ startsWith(github.ref, 'refs/heads/release') }} shell: bash run: | @@ -104,59 +93,49 @@ jobs: echo "TARI_TARGET_NETWORK=nextnet" >> $GITHUB_ENV cd "${GITHUB_WORKSPACE}/src-tauri" # Don't mess with the double quotes and inner escaped quotes - yq eval ".package.productName = \"Tari Universe\"" -i tauri.conf.json - yq eval ".tauri.windows[0].title = \"Tari Universe | Testnet\"" -i tauri.conf.json - yq eval ".tauri.bundle.identifier = \"com.tari.universe\"" -i tauri.conf.json - yq eval ".tauri.updater.endpoints = [\"https://raw.githubusercontent.com/tari-project/universe/main/.updater/latest.json\"]" \ + yq eval ".productName = \"Tari Universe\"" -i tauri.conf.json + yq eval ".mainBinaryName = \"Tari Universe\"" -i tauri.conf.json + yq eval ".app.windows[0].title = \"Tari Universe | Testnet\"" -i tauri.conf.json + yq eval ".identifier = \"com.tari.universe\"" -i tauri.conf.json + yq eval ".plugins.updater.endpoints = [\"https://raw.githubusercontent.com/tari-project/universe/main/.updater/latest.json\"]" \ -i tauri.conf.json - - name: Node.js setup - uses: actions/setup-node@v4 + - uses: actions/setup-node@v4 with: node-version: lts/* cache: 'npm' - - name: Rust setup (linux) - if: startsWith(runner.os,'Linux') - uses: dtolnay/rust-toolchain@stable - env: - RUSTUP_PERMIT_COPY_RENAME: true - with: - toolchain: stable - target: aarch64-unknown-linux-gnu - - - name: Rust setup (macOS) - if: startsWith(runner.os,'macOS') + - name: Rust Setup uses: dtolnay/rust-toolchain@stable with: - target: aarch64-apple-darwin,x86_64-apple-darwin + targets: ${{ matrix.platform == 'macos-latest' && 'aarch64-apple-darwin,x86_64-apple-darwin' || '' }} - - name: Cache cargo files and outputs + - name: Cache Cargo files and outputs if: ${{ ( ! startsWith(github.ref, 'refs/heads/release') ) && ( ! startsWith(github.ref, 'refs/tags/v') ) }} uses: swatinem/rust-cache@v2 with: workspaces: './src-tauri -> target' - - name: Install dependencies (linux) + - name: Install Dependencies - Linux if: startsWith(runner.os,'Linux') run: | sudo apt-get update sudo apt-get install --no-install-recommends --assume-yes \ - libwebkit2gtk-4.0-dev \ + libwebkit2gtk-4.1-dev \ libappindicator3-dev \ librsvg2-dev \ patchelf \ libprotobuf-dev \ protobuf-compiler - - name: Install dependencies (linux/OpenCL) + - name: Install Dependencies - Linux/OpenCL if: startsWith(runner.os,'Linux') run: | sudo apt-get install --no-install-recommends --assume-yes \ opencl-headers \ ocl-icd-opencl-dev - - name: Install dependencies (macOS) + - name: Install Dependencies - macOS if: startsWith(runner.os,'macOS') run: | # openssl, cmake and autoconf already installed @@ -168,25 +147,25 @@ jobs: rustup toolchain install stable-x86_64-apple-darwin --force-non-host rustup toolchain install stable-aarch64-apple-darwin --force-non-host - - name: Install dependencies (windows) + - name: Install Dependencies - Windows if: startsWith(runner.os,'Windows') run: | vcpkg.exe install sqlite3:x64-windows zlib:x64-windows choco upgrade protoc -y - - name: Install dependencies (windows/OpenCL) + - name: Install Dependencies - Windows/OpenCL if: startsWith(runner.os,'Windows') run: | vcpkg.exe --triplet=x64-windows install opencl - - name: Set environment variables (windows) + - name: Set environment variables - Windows if: startsWith(runner.os,'Windows') shell: bash run: | echo "SQLITE3_LIB_DIR=C:\vcpkg\installed\x64-windows\lib" >> $GITHUB_ENV echo "LIB=C:\vcpkg\installed\x64-windows\lib" >> $GITHUB_ENV - - name: Azure code-signing setup (windows only) + - name: Azure Code-signing Setup - Windows Only if: ${{ ( startsWith(runner.os,'Windows') ) && ( env.AZURE_TENANT_ID != '' ) }} shell: bash env: @@ -195,17 +174,17 @@ jobs: run: | cd "${GITHUB_WORKSPACE}/src-tauri" echo "{}" | \ - jq '.tauri .bundle .windows += {"signCommand": "${{ env.WINDOWS_SIGN_COMMAND }}"}' > \ + jq '.bundle .windows += {"signCommand": "${{ env.WINDOWS_SIGN_COMMAND }}"}' > \ ./tauri.windows.conf.json cat ./tauri.windows.conf.json cargo install trusted-signing-cli@0.3.0 --locked - - name: Install dependencies (node) + - name: Install Dependencies - Node run: | npm --version npm install - - name: Build Tauri apps + - name: Build Tauri Apps id: build uses: tauri-apps/tauri-action@v0.5.15 env: @@ -220,30 +199,30 @@ jobs: AZURE_TENANT_ID: ${{ startsWith(runner.os,'Windows') && secrets.AZURE_TENANT_ID }} AZURE_CLIENT_ID: ${{ startsWith(runner.os,'Windows') && secrets.AZURE_CLIENT_ID }} AZURE_CLIENT_SECRET: ${{ startsWith(runner.os,'Windows') && secrets.AZURE_CLIENT_SECRET }} - TAURI_KEY_PASSWORD: ${{ secrets.TAURI_KEY_PASSWORD }} - TAURI_PRIVATE_KEY: ${{ secrets.TAURI_PRIVATE_KEY }} + TAURI_SIGNING_PRIVATE_KEY_PASSWORD: ${{ secrets.TAURI_KEY_PASSWORD }} + TAURI_SIGNING_PRIVATE_KEY: ${{ secrets.TAURI_PRIVATE_KEY }} SENTRY_AUTH_TOKEN: ${{ secrets.SENTRY_AUTH_TOKEN }} NODE_OPTIONS: '--max_old_space_size=4096' with: tagName: ${{ env.tagName }} releaseName: ${{ env.releaseName }} releaseBody: 'Tari Universe - See the assets to download this version and install' - # releaseId: ${{ env.releaseId }} releaseDraft: true prerelease: true includeDebug: false includeRelease: true args: ${{ matrix.args }} --features "${{ env.TS_FEATURES }}" - - name: Debug step {artifactPaths} - if: ${{ false }} + - name: Debug Step - artifactPaths + if: ${{ ( github.event_name == 'schedule' ) || ( ! startsWith(github.ref, 'refs/heads/release') ) }} continue-on-error: true env: artifactPaths: ${{ steps.build.outputs.artifactPaths }} shell: bash - run: echo "Artifact ID from previous job is $artifactPaths" + run: | + echo "Artifact paths:\n ${{ join(fromJSON(steps.build.outputs.artifactPaths), '\n') }}" - - name: Upload none releases + - name: BETA Builds - Upload assets if: ${{ ( github.event_name == 'schedule' ) || ( ! startsWith(github.ref, 'refs/heads/release') ) }} uses: actions/upload-artifact@v4 with: diff --git a/.prettierrc b/.prettierrc index 8934690e3..1564a3fb2 100644 --- a/.prettierrc +++ b/.prettierrc @@ -5,5 +5,13 @@ "singleQuote": true, "bracketSpacing": true, "printWidth": 120, - "endOfLine": "auto" -} \ No newline at end of file + "endOfLine": "auto", + "overrides": [ + { + "files": "*.yml", + "options": { + "tabWidth": 2 + } + } + ] +} diff --git a/.updater/alpha-latest.json b/.updater/alpha-latest.json index 9fe1ee5cf..985988009 100644 --- a/.updater/alpha-latest.json +++ b/.updater/alpha-latest.json @@ -1,23 +1,23 @@ { - "version": "0.1.0", - "notes": "Tari Universe - See the assets to download this version and install", - "pub_date": "2024-10-01T10:21:09.614Z", - "platforms": { - "linux-x86_64": { - "signature": "dW50cnVzdGVkIGNvbW1lbnQ6IHNpZ25hdHVyZSBmcm9tIHRhdXJpIHNlY3JldCBrZXkKUlVRbUtvKzlyYWhiOGJtelJoWTkrQVpxS3NkRHZpaTgwaGc0K0ZleTEwb2RwQWlyNmRhRnNDaVBFMDI0OUhmUFEwNmtvV2dyRGRlOUlINmlERXlJNTduY2NpdU9XQytqWHdJPQp0cnVzdGVkIGNvbW1lbnQ6IHRpbWVzdGFtcDoxNzI3Nzc3MzY5CWZpbGU6dGFyaS11bml2ZXJzZV8wLjUuNl9hbWQ2NC5BcHBJbWFnZS50YXIuZ3oKZEN5ODMrREZycHlEaTZqN2pQM090Uk5lWHZkMnlEWXhYUFgwSDV2bjRuaVlGWHBzMW53WHFvYXY5b2ptSUUvUkUzU0IydXp2aHVGRWtKVUpscW9PQmc9PQo=", - "url": "https://github.com/tari-project/universe/releases/download/v0.5.6/tari-universe_0.5.6_amd64.AppImage.tar.gz" - }, - "darwin-aarch64": { - "signature": "dW50cnVzdGVkIGNvbW1lbnQ6IHNpZ25hdHVyZSBmcm9tIHRhdXJpIHNlY3JldCBrZXkKUlVRbUtvKzlyYWhiOFZkV2ZmdG1ZSFE1WGFPWVVSUm5SOG1Nb0hpU2ZvckZzaStEZEtsWlQ4RVQwMWRCc1l0QTFjNVNpb2x4MnJVWmtZVVJqbDlaZHVCNTE1M2t3Wkg4MkFrPQp0cnVzdGVkIGNvbW1lbnQ6IHRpbWVzdGFtcDoxNzI3Nzc3NTI3CWZpbGU6VGFyaSBVbml2ZXJzZS5hcHAudGFyLmd6CnRLU3NOT202VU5xQUNvUWgxVzRqNlNwZ3lKbUIxZ3I2Ukd2R3hianlRazcvU3docWllNmUxa01JUUNkcnUzeWxIK0xIN3RlQmJkdllCM05yTGswWUNnPT0K", - "url": "https://github.com/tari-project/universe/releases/download/v0.5.6/Tari.Universe_universal.app.tar.gz" - }, - "darwin-x86_64": { - "signature": "dW50cnVzdGVkIGNvbW1lbnQ6IHNpZ25hdHVyZSBmcm9tIHRhdXJpIHNlY3JldCBrZXkKUlVRbUtvKzlyYWhiOFZkV2ZmdG1ZSFE1WGFPWVVSUm5SOG1Nb0hpU2ZvckZzaStEZEtsWlQ4RVQwMWRCc1l0QTFjNVNpb2x4MnJVWmtZVVJqbDlaZHVCNTE1M2t3Wkg4MkFrPQp0cnVzdGVkIGNvbW1lbnQ6IHRpbWVzdGFtcDoxNzI3Nzc3NTI3CWZpbGU6VGFyaSBVbml2ZXJzZS5hcHAudGFyLmd6CnRLU3NOT202VU5xQUNvUWgxVzRqNlNwZ3lKbUIxZ3I2Ukd2R3hianlRazcvU3docWllNmUxa01JUUNkcnUzeWxIK0xIN3RlQmJkdllCM05yTGswWUNnPT0K", - "url": "https://github.com/tari-project/universe/releases/download/v0.5.6/Tari.Universe_universal.app.tar.gz" - }, - "windows-x86_64": { - "signature": "dW50cnVzdGVkIGNvbW1lbnQ6IHNpZ25hdHVyZSBmcm9tIHRhdXJpIHNlY3JldCBrZXkKUlVRbUtvKzlyYWhiOGY5RHBGU0lPVC9vL092TzF2Z1hPNEkwUnltVEJabW1JWGpwUi9EaFN6WkJydW9HMXFQQlVGYit5dmhMemQzOXA1V3BPQlNsaEpvNEl5bnhqangwS2dFPQp0cnVzdGVkIGNvbW1lbnQ6IHRpbWVzdGFtcDoxNzI3Nzc4MDY2CWZpbGU6VGFyaSBVbml2ZXJzZV8wLjUuNl94NjRfZW4tVVMubXNpLnppcApobm4yNGM2VDhlUjRibnl0THpZTEl1ajhzQm54dllwLzcxbzNVeU5UU2FmSXVpTVlCUmNrWWdZUDN6QjhVWVhDZGcrVDB2ekZPemFLdGFVOXNYMW5Cdz09Cg==", - "url": "https://github.com/tari-project/universe/releases/download/v0.5.6/Tari.Universe_0.5.6_x64_en-US.msi.zip" + "version": "0.1.0", + "notes": "Tari Universe - See the assets to download this version and install", + "pub_date": "2024-10-01T10:21:09.614Z", + "platforms": { + "linux-x86_64": { + "signature": "dW50cnVzdGVkIGNvbW1lbnQ6IHNpZ25hdHVyZSBmcm9tIHRhdXJpIHNlY3JldCBrZXkKUlVRbUtvKzlyYWhiOGJtelJoWTkrQVpxS3NkRHZpaTgwaGc0K0ZleTEwb2RwQWlyNmRhRnNDaVBFMDI0OUhmUFEwNmtvV2dyRGRlOUlINmlERXlJNTduY2NpdU9XQytqWHdJPQp0cnVzdGVkIGNvbW1lbnQ6IHRpbWVzdGFtcDoxNzI3Nzc3MzY5CWZpbGU6dGFyaS11bml2ZXJzZV8wLjUuNl9hbWQ2NC5BcHBJbWFnZS50YXIuZ3oKZEN5ODMrREZycHlEaTZqN2pQM090Uk5lWHZkMnlEWXhYUFgwSDV2bjRuaVlGWHBzMW53WHFvYXY5b2ptSUUvUkUzU0IydXp2aHVGRWtKVUpscW9PQmc9PQo=", + "url": "https://github.com/tari-project/universe/releases/download/v0.5.6/tari-universe_0.5.6_amd64.AppImage.tar.gz" + }, + "darwin-aarch64": { + "signature": "dW50cnVzdGVkIGNvbW1lbnQ6IHNpZ25hdHVyZSBmcm9tIHRhdXJpIHNlY3JldCBrZXkKUlVRbUtvKzlyYWhiOFZkV2ZmdG1ZSFE1WGFPWVVSUm5SOG1Nb0hpU2ZvckZzaStEZEtsWlQ4RVQwMWRCc1l0QTFjNVNpb2x4MnJVWmtZVVJqbDlaZHVCNTE1M2t3Wkg4MkFrPQp0cnVzdGVkIGNvbW1lbnQ6IHRpbWVzdGFtcDoxNzI3Nzc3NTI3CWZpbGU6VGFyaSBVbml2ZXJzZS5hcHAudGFyLmd6CnRLU3NOT202VU5xQUNvUWgxVzRqNlNwZ3lKbUIxZ3I2Ukd2R3hianlRazcvU3docWllNmUxa01JUUNkcnUzeWxIK0xIN3RlQmJkdllCM05yTGswWUNnPT0K", + "url": "https://github.com/tari-project/universe/releases/download/v0.5.6/Tari.Universe_universal.app.tar.gz" + }, + "darwin-x86_64": { + "signature": "dW50cnVzdGVkIGNvbW1lbnQ6IHNpZ25hdHVyZSBmcm9tIHRhdXJpIHNlY3JldCBrZXkKUlVRbUtvKzlyYWhiOFZkV2ZmdG1ZSFE1WGFPWVVSUm5SOG1Nb0hpU2ZvckZzaStEZEtsWlQ4RVQwMWRCc1l0QTFjNVNpb2x4MnJVWmtZVVJqbDlaZHVCNTE1M2t3Wkg4MkFrPQp0cnVzdGVkIGNvbW1lbnQ6IHRpbWVzdGFtcDoxNzI3Nzc3NTI3CWZpbGU6VGFyaSBVbml2ZXJzZS5hcHAudGFyLmd6CnRLU3NOT202VU5xQUNvUWgxVzRqNlNwZ3lKbUIxZ3I2Ukd2R3hianlRazcvU3docWllNmUxa01JUUNkcnUzeWxIK0xIN3RlQmJkdllCM05yTGswWUNnPT0K", + "url": "https://github.com/tari-project/universe/releases/download/v0.5.6/Tari.Universe_universal.app.tar.gz" + }, + "windows-x86_64": { + "signature": "dW50cnVzdGVkIGNvbW1lbnQ6IHNpZ25hdHVyZSBmcm9tIHRhdXJpIHNlY3JldCBrZXkKUlVRbUtvKzlyYWhiOGY5RHBGU0lPVC9vL092TzF2Z1hPNEkwUnltVEJabW1JWGpwUi9EaFN6WkJydW9HMXFQQlVGYit5dmhMemQzOXA1V3BPQlNsaEpvNEl5bnhqangwS2dFPQp0cnVzdGVkIGNvbW1lbnQ6IHRpbWVzdGFtcDoxNzI3Nzc4MDY2CWZpbGU6VGFyaSBVbml2ZXJzZV8wLjUuNl94NjRfZW4tVVMubXNpLnppcApobm4yNGM2VDhlUjRibnl0THpZTEl1ajhzQm54dllwLzcxbzNVeU5UU2FmSXVpTVlCUmNrWWdZUDN6QjhVWVhDZGcrVDB2ekZPemFLdGFVOXNYMW5Cdz09Cg==", + "url": "https://github.com/tari-project/universe/releases/download/v0.5.6/Tari.Universe_0.5.6_x64_en-US.msi.zip" + } } - } -} \ No newline at end of file +} diff --git a/.updater/latest.json b/.updater/latest.json index f4ef9fc02..e0b8d8b8f 100644 --- a/.updater/latest.json +++ b/.updater/latest.json @@ -20,4 +20,4 @@ "url": "https://github.com/tari-project/universe/releases/download/v0.8.2/Tari.Universe_0.8.2_x64_en-US.msi.zip" } } -} \ No newline at end of file +} diff --git a/ci/build-notes.md b/ci/build-notes.md index c3cc4cab2..3e2ef690d 100644 --- a/ci/build-notes.md +++ b/ci/build-notes.md @@ -1,6 +1,7 @@ # Build notes # Cross-OS compile on Apple M(x) for Linux ARM64, using docker + ```bash git clone git@github.com:tari-project/universe.git cd universe @@ -18,6 +19,7 @@ docker run -it --rm \ ``` # Install some basic utils + ```bash apt-get update apt-get install --no-install-recommends --assume-yes \ @@ -29,11 +31,13 @@ apt-get install --no-install-recommends --assume-yes \ ``` # Install compile tools + ```bash apt-get install --assume-yes build-essential ``` # Install tauri dependancies + ```bash apt-get install --no-install-recommends --assume-yes \ libwebkit2gtk-4.0-dev \ @@ -45,6 +49,7 @@ apt-get install --no-install-recommends --assume-yes \ ``` # Needed for randomx-rs build + ```bash apt-get install --assume-yes \ git \ @@ -54,6 +59,7 @@ apt-get install --assume-yes \ ``` # Needed for openssl library + ```bash apt-get install --assume-yes \ openssl \ @@ -62,24 +68,29 @@ apt-get install --assume-yes \ ``` # Install rust + ```bash curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y ``` # Get rust to work in current shell + ```bash export PATH="$HOME/.cargo/bin:$PATH" source "$HOME/.cargo/env" ``` # Check rust install + ```bash rustup target list --installed rustup toolchain list ``` # Install nodejs from nodeSource -# more info can be found at https://github.com/nodesource/distributions + +# more info can be found at https://github.com/nodesource/distributions + ```bash mkdir -p ~/temp/ curl -fsSL https://deb.nodesource.com/setup_22.x -o ~/temp/nodesource_setup.sh @@ -91,21 +102,25 @@ npm --version ``` # Install node modules + ```bash npm install ``` # Build node assets + ```bash npm run build ``` # Install tauri-cli + ```bash -cargo install tauri-cli@1.6.4 +cargo install tauri-cli@latest ``` # Build application + ```bash cargo tauri build ``` diff --git a/package-lock.json b/package-lock.json index 7b597e509..624651f98 100644 --- a/package-lock.json +++ b/package-lock.json @@ -11,7 +11,11 @@ "@floating-ui/react": "^0.26.28", "@lottiefiles/dotlottie-react": "^0.10.1", "@sentry/react": "^8.41.0", - "@tauri-apps/api": "^1", + "@tauri-apps/api": "^2.1.1", + "@tauri-apps/plugin-os": "^2.0.0", + "@tauri-apps/plugin-process": "^2.0.0", + "@tauri-apps/plugin-shell": "^2.0.1", + "@tauri-apps/plugin-updater": "^2.0.0", "emoji-regex": "^10.4.0", "framer-motion": "^11.12.0", "globals": "^15.12.0", @@ -27,6 +31,8 @@ "react-markdown": "^9.0.1", "socket.io-client": "^4.8.1", "styled-components": "^6.1.12", + "tauri-plugin-sentry-api": "^0.2.0", + "use-sync-external-store": "^1.2.2", "uuid": "^10.0.0", "vite-tsconfig-paths": "^5.1.3", "zustand": "^5.0.1" @@ -36,7 +42,7 @@ "@nabla/vite-plugin-eslint": "^2.0.5", "@sentry/vite-plugin": "^2.22.6", "@taplo/cli": "^0.7.0", - "@tauri-apps/cli": "^1.6.3", + "@tauri-apps/cli": "^2.1.0", "@types/eslint__js": "^8.42.3", "@types/node": "^22.10.1", "@types/react": "^18.3.12", @@ -64,6 +70,7 @@ "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.3.0.tgz", "integrity": "sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==", "dev": true, + "license": "Apache-2.0", "dependencies": { "@jridgewell/gen-mapping": "^0.3.5", "@jridgewell/trace-mapping": "^0.3.24" @@ -128,15 +135,6 @@ "url": "https://opencollective.com/babel" } }, - "node_modules/@babel/core/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - } - }, "node_modules/@babel/generator": { "version": "7.26.2", "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.26.2.tgz", @@ -155,12 +153,13 @@ } }, "node_modules/@babel/helper-annotate-as-pure": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.24.7.tgz", - "integrity": "sha512-BaDeOonYvhdKw+JoMVkAixAAJzG2jVPIwWoKBPdYuY9b452e2rPuI9QPYh3KpofZ3pW2akOmwZLOiOsHMiqRAg==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.25.9.tgz", + "integrity": "sha512-gv7320KBUFJz1RnylIg5WWYPRXKZ884AGkYpgpWW02TH66Dl+HaC1t1CKd0z3R4b6hdYEcmrNZHUmfCP+1u3/g==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/types": "^7.24.7" + "@babel/types": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -183,16 +182,6 @@ "node": ">=6.9.0" } }, - "node_modules/@babel/helper-compilation-targets/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - } - }, "node_modules/@babel/helper-module-imports": { "version": "7.25.9", "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.25.9.tgz", @@ -296,12 +285,13 @@ } }, "node_modules/@babel/plugin-syntax-jsx": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.24.7.tgz", - "integrity": "sha512-6ddciUPe/mpMnOKv/U+RSd2vvVy+Yw/JfBB0ZHYjEZt9NLHmCUylNYlsbqCCS1Bffjlb0fCwC9Vqz+sBz6PsiQ==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.25.9.tgz", + "integrity": "sha512-ld6oezHQMZsZfp6pWtbjaNDF2tiiCYYDqQszHt5VV437lewP9aSi2Of99CK0D0XB21k7FLgnLcmQKyKzynfeAA==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.7" + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -343,9 +333,10 @@ } }, "node_modules/@babel/runtime": { - "version": "7.25.6", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.25.6.tgz", - "integrity": "sha512-VBj9MYyDb9tuLq7yzqjgzt6Q+IBQLrGZfdjOekyEirZPHxXWoTSGUTMrpsfi58Up73d13NfYLv8HT9vmznjzhQ==", + "version": "7.26.0", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.26.0.tgz", + "integrity": "sha512-FDSOghenHTiToteC/QRlv2q3DhPZ/oOXTBoirfWNx1Cx3TMVcGWQtMMmQcSvb/JjpNeGzx8Pq/b4fKEJuWm1sw==", + "license": "MIT", "dependencies": { "regenerator-runtime": "^0.14.0" }, @@ -392,6 +383,7 @@ "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", "dev": true, + "license": "MIT", "engines": { "node": ">=4" } @@ -414,6 +406,7 @@ "version": "1.2.2", "resolved": "https://registry.npmjs.org/@emotion/is-prop-valid/-/is-prop-valid-1.2.2.tgz", "integrity": "sha512-uNsoYd37AFmaCdXlg6EYD1KaPOaRWRByMCYzbKUX4+hhMfrxdVSelShywL4JVaAeM/eHUOSprYBQls+/neX3pw==", + "license": "MIT", "dependencies": { "@emotion/memoize": "^0.8.1" } @@ -421,12 +414,14 @@ "node_modules/@emotion/memoize": { "version": "0.8.1", "resolved": "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.8.1.tgz", - "integrity": "sha512-W2P2c/VRW1/1tLox0mVUalvnWXxavmv/Oum2aPsRcoDJuob75FC3Y8FbpfLwUegRcxINtGUMPq0tFCvYNTBXNA==" + "integrity": "sha512-W2P2c/VRW1/1tLox0mVUalvnWXxavmv/Oum2aPsRcoDJuob75FC3Y8FbpfLwUegRcxINtGUMPq0tFCvYNTBXNA==", + "license": "MIT" }, "node_modules/@emotion/unitless": { "version": "0.8.1", "resolved": "https://registry.npmjs.org/@emotion/unitless/-/unitless-0.8.1.tgz", - "integrity": "sha512-KOEGMu6dmJZtpadb476IsZBclKvILjopjUii3V+7MnXIQCYh8W3NgNcgwo21n9LXZX6EDIKvqfjYxXebDwxKmQ==" + "integrity": "sha512-KOEGMu6dmJZtpadb476IsZBclKvILjopjUii3V+7MnXIQCYh8W3NgNcgwo21n9LXZX6EDIKvqfjYxXebDwxKmQ==", + "license": "MIT" }, "node_modules/@esbuild/aix-ppc64": { "version": "0.21.5", @@ -436,6 +431,7 @@ "ppc64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "aix" @@ -452,6 +448,7 @@ "arm" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "android" @@ -468,6 +465,7 @@ "arm64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "android" @@ -484,6 +482,7 @@ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "android" @@ -500,6 +499,7 @@ "arm64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "darwin" @@ -516,6 +516,7 @@ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "darwin" @@ -532,6 +533,7 @@ "arm64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "freebsd" @@ -548,6 +550,7 @@ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "freebsd" @@ -564,6 +567,7 @@ "arm" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" @@ -580,6 +584,7 @@ "arm64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" @@ -596,6 +601,7 @@ "ia32" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" @@ -612,6 +618,7 @@ "loong64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" @@ -628,6 +635,7 @@ "mips64el" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" @@ -644,6 +652,7 @@ "ppc64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" @@ -660,6 +669,7 @@ "riscv64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" @@ -676,6 +686,7 @@ "s390x" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" @@ -692,6 +703,7 @@ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" @@ -708,6 +720,7 @@ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "netbsd" @@ -724,6 +737,7 @@ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "openbsd" @@ -740,6 +754,7 @@ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "sunos" @@ -756,6 +771,7 @@ "arm64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "win32" @@ -772,6 +788,7 @@ "ia32" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "win32" @@ -788,6 +805,7 @@ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "win32" @@ -797,34 +815,53 @@ } }, "node_modules/@eslint-community/eslint-utils": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz", - "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==", + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.1.tgz", + "integrity": "sha512-s3O3waFUrMV8P/XaF/+ZTp1X9XBZW1a4B97ZnjQF2KYWaFD2A8KyFBsrsfSjEmjn3RGWAIuvlneuZm3CUK3jbA==", "dev": true, + "license": "MIT", "dependencies": { - "eslint-visitor-keys": "^3.3.0" + "eslint-visitor-keys": "^3.4.3" }, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, + "funding": { + "url": "https://opencollective.com/eslint" + }, "peerDependencies": { "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" } }, + "node_modules/@eslint-community/eslint-utils/node_modules/eslint-visitor-keys": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, "node_modules/@eslint-community/regexpp": { "version": "4.12.1", "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.12.1.tgz", "integrity": "sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==", "dev": true, + "license": "MIT", "engines": { "node": "^12.0.0 || ^14.0.0 || >=16.0.0" } }, "node_modules/@eslint/config-array": { - "version": "0.18.0", - "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.18.0.tgz", - "integrity": "sha512-fTxvnS1sRMu3+JjXwJG0j/i4RT9u4qJ+lqS/yCGap4lH4zZGzQ7tu+xZqQmcMZq5OBZDL4QRxQzRjkWcGt8IVw==", + "version": "0.19.0", + "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.19.0.tgz", + "integrity": "sha512-zdHg2FPIFNKPdcHWtiNT+jEFCHYVplAXRDlQDyqy0zGx/q2parwh7brGJSiTxRk/TSMkbM//zt/f5CHgyTyaSQ==", "dev": true, + "license": "Apache-2.0", "dependencies": { "@eslint/object-schema": "^2.1.4", "debug": "^4.3.1", @@ -839,6 +876,7 @@ "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" @@ -849,6 +887,7 @@ "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" }, @@ -857,10 +896,11 @@ } }, "node_modules/@eslint/core": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.7.0.tgz", - "integrity": "sha512-xp5Jirz5DyPYlPiKat8jaq0EmYvDXKKpzTbxXMpT9eqlRJkRKIz9AGMdlvYjih+im+QlhWrpvVjl8IPC/lHlUw==", + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.9.0.tgz", + "integrity": "sha512-7ATR9F0e4W85D/0w7cU0SNj7qkAexMG+bAHEZOjo9akvGuhHE2m7umzWzfnpa0XAg5Kxc1BWmtPMV67jJ+9VUg==", "dev": true, + "license": "Apache-2.0", "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" } @@ -870,6 +910,7 @@ "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.2.0.tgz", "integrity": "sha512-grOjVNN8P3hjJn/eIETF1wwd12DdnwFDoyceUJLYYdkpbwq3nLi+4fqrTAONx7XDALqlL220wC/RHSC/QTI/0w==", "dev": true, + "license": "MIT", "dependencies": { "ajv": "^6.12.4", "debug": "^4.3.2", @@ -893,6 +934,7 @@ "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" @@ -903,6 +945,7 @@ "resolved": "https://registry.npmjs.org/globals/-/globals-14.0.0.tgz", "integrity": "sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=18" }, @@ -915,6 +958,7 @@ "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" }, @@ -927,6 +971,7 @@ "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.15.0.tgz", "integrity": "sha512-tMTqrY+EzbXmKJR5ToI8lxu7jaN5EdmrBFJpQk5JmSlyLsx6o4t27r883K5xsLuCYCpfKBCGswMSWXsM+jB7lg==", "dev": true, + "license": "MIT", "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" } @@ -936,6 +981,7 @@ "resolved": "https://registry.npmjs.org/@eslint/object-schema/-/object-schema-2.1.4.tgz", "integrity": "sha512-BsWiH1yFGjXXS2yvrf5LyuoSIIbPrGUWob917o+BTKuZ7qJdxX8aJLRxs1fS9n6r7vESrq1OUqb68dANcFXuQQ==", "dev": true, + "license": "Apache-2.0", "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" } @@ -945,6 +991,7 @@ "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.2.3.tgz", "integrity": "sha512-2b/g5hRmpbb1o4GnTZax9N9m0FXzz9OV42ZzI4rDDMDuHUqigAiQCEWChBWCY4ztAGVRjoWT19v0yMmc5/L5kA==", "dev": true, + "license": "Apache-2.0", "dependencies": { "levn": "^0.4.1" }, @@ -956,14 +1003,16 @@ "version": "1.6.8", "resolved": "https://registry.npmjs.org/@floating-ui/core/-/core-1.6.8.tgz", "integrity": "sha512-7XJ9cPU+yI2QeLS+FCSlqNFZJq8arvswefkZrYI1yQBbftw6FyrZOxYSh+9S7z7TpeWlRt9zJ5IhM1WIL334jA==", + "license": "MIT", "dependencies": { "@floating-ui/utils": "^0.2.8" } }, "node_modules/@floating-ui/dom": { - "version": "1.6.11", - "resolved": "https://registry.npmjs.org/@floating-ui/dom/-/dom-1.6.11.tgz", - "integrity": "sha512-qkMCxSR24v2vGkhYDo/UzxfJN3D4syqSjyuTFz6C7XcpU1pASPRieNI0Kj5VP3/503mOfYiGY891ugBX1GlABQ==", + "version": "1.6.12", + "resolved": "https://registry.npmjs.org/@floating-ui/dom/-/dom-1.6.12.tgz", + "integrity": "sha512-NP83c0HjokcGVEMeoStg317VD9W7eDlGK7457dMBANbKA6GJZdc7rjujdgqzTaz93jkGgc5P/jeWbaCHnMNc+w==", + "license": "MIT", "dependencies": { "@floating-ui/core": "^1.6.0", "@floating-ui/utils": "^0.2.8" @@ -973,6 +1022,7 @@ "version": "0.26.28", "resolved": "https://registry.npmjs.org/@floating-ui/react/-/react-0.26.28.tgz", "integrity": "sha512-yORQuuAtVpiRjpMhdc0wJj06b9JFjrYF4qp96j++v2NBpbi6SEGF7donUJ3TMieerQ6qVkAv1tgr7L4r5roTqw==", + "license": "MIT", "dependencies": { "@floating-ui/react-dom": "^2.1.2", "@floating-ui/utils": "^0.2.8", @@ -987,6 +1037,7 @@ "version": "2.1.2", "resolved": "https://registry.npmjs.org/@floating-ui/react-dom/-/react-dom-2.1.2.tgz", "integrity": "sha512-06okr5cgPzMNBy+Ycse2A6udMi4bqwW/zgBF/rwjcNqWkyr82Mcg8b0vjX8OJpZFy/FKjJmw6wV7t44kK6kW7A==", + "license": "MIT", "dependencies": { "@floating-ui/dom": "^1.0.0" }, @@ -998,13 +1049,15 @@ "node_modules/@floating-ui/utils": { "version": "0.2.8", "resolved": "https://registry.npmjs.org/@floating-ui/utils/-/utils-0.2.8.tgz", - "integrity": "sha512-kym7SodPp8/wloecOpcmSnWJsK7M0E5Wg8UcFA+uO4B9s5d0ywXOEro/8HM9x0rW+TljRzul/14UYz3TleT3ig==" + "integrity": "sha512-kym7SodPp8/wloecOpcmSnWJsK7M0E5Wg8UcFA+uO4B9s5d0ywXOEro/8HM9x0rW+TljRzul/14UYz3TleT3ig==", + "license": "MIT" }, "node_modules/@humanfs/core": { "version": "0.19.1", "resolved": "https://registry.npmjs.org/@humanfs/core/-/core-0.19.1.tgz", "integrity": "sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==", "dev": true, + "license": "Apache-2.0", "engines": { "node": ">=18.18.0" } @@ -1014,6 +1067,7 @@ "resolved": "https://registry.npmjs.org/@humanfs/node/-/node-0.16.6.tgz", "integrity": "sha512-YuI2ZHQL78Q5HbhDiBA1X4LmYdXCKCMQIfw0pw7piHJwyREFebJUvrQN4cMssyES6x+vfUbx1CIpaQUKYdQZOw==", "dev": true, + "license": "Apache-2.0", "dependencies": { "@humanfs/core": "^0.19.1", "@humanwhocodes/retry": "^0.3.0" @@ -1027,6 +1081,7 @@ "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.3.1.tgz", "integrity": "sha512-JBxkERygn7Bv/GbN5Rv8Ul6LVknS+5Bp6RgDC/O8gEBU/yeH5Ui5C/OlWrTb6qct7LjjfT6Re2NxB0ln0yYybA==", "dev": true, + "license": "Apache-2.0", "engines": { "node": ">=18.18" }, @@ -1041,6 +1096,7 @@ "integrity": "sha512-DZLEEqFWQFiyK6h5YIeynKx7JlvCYWL0cImfSRXZ9l4Sg2efkFGTuFf6vzXjK1cq6IYkU+Eg/JizXw+TD2vRNw==", "deprecated": "Use @eslint/config-array instead", "dev": true, + "license": "Apache-2.0", "dependencies": { "@humanwhocodes/object-schema": "^2.0.3", "debug": "^4.3.1", @@ -1055,6 +1111,7 @@ "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" @@ -1065,6 +1122,7 @@ "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" }, @@ -1077,6 +1135,7 @@ "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", "dev": true, + "license": "Apache-2.0", "engines": { "node": ">=12.22" }, @@ -1090,13 +1149,15 @@ "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.3.tgz", "integrity": "sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==", "deprecated": "Use @eslint/object-schema instead", - "dev": true + "dev": true, + "license": "BSD-3-Clause" }, "node_modules/@humanwhocodes/retry": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.4.1.tgz", "integrity": "sha512-c7hNEllBlenFTHBky65mhq8WD2kbN9Q6gk0bTk8lSBvc554jpXSkST1iePudpt7+A/AQvuHs9EMqjHDXMY1lrA==", "dev": true, + "license": "Apache-2.0", "engines": { "node": ">=18.18" }, @@ -1110,6 +1171,7 @@ "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.3.tgz", "integrity": "sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==", "dev": true, + "license": "MIT", "dependencies": { "@sinclair/typebox": "^0.27.8" }, @@ -1122,6 +1184,7 @@ "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz", "integrity": "sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==", "dev": true, + "license": "MIT", "dependencies": { "@jridgewell/set-array": "^1.2.1", "@jridgewell/sourcemap-codec": "^1.4.10", @@ -1136,6 +1199,7 @@ "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", "dev": true, + "license": "MIT", "engines": { "node": ">=6.0.0" } @@ -1145,6 +1209,7 @@ "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz", "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==", "dev": true, + "license": "MIT", "engines": { "node": ">=6.0.0" } @@ -1153,13 +1218,15 @@ "version": "1.5.0", "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz", "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@jridgewell/trace-mapping": { "version": "0.3.25", "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", "dev": true, + "license": "MIT", "dependencies": { "@jridgewell/resolve-uri": "^3.1.0", "@jridgewell/sourcemap-codec": "^1.4.14" @@ -1205,6 +1272,7 @@ "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", "dev": true, + "license": "MIT", "dependencies": { "@nodelib/fs.stat": "2.0.5", "run-parallel": "^1.1.9" @@ -1218,6 +1286,7 @@ "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", "dev": true, + "license": "MIT", "engines": { "node": ">= 8" } @@ -1227,6 +1296,7 @@ "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", "dev": true, + "license": "MIT", "dependencies": { "@nodelib/fs.scandir": "2.1.5", "fastq": "^1.6.0" @@ -1240,6 +1310,7 @@ "resolved": "https://registry.npmjs.org/@pkgr/core/-/core-0.1.1.tgz", "integrity": "sha512-cq8o4cWH0ibXh9VGi5P20Tu9XF/0fFXl9EUinr9QfTM7a7p0oTA4iJRCQWppXR1Pg8dSM0UCItCkPwsk9qWWYA==", "dev": true, + "license": "MIT", "engines": { "node": "^12.20.0 || ^14.18.0 || >=16.0.0" }, @@ -1248,208 +1319,252 @@ } }, "node_modules/@rollup/rollup-android-arm-eabi": { - "version": "4.22.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.22.4.tgz", - "integrity": "sha512-Fxamp4aEZnfPOcGA8KSNEohV8hX7zVHOemC8jVBoBUHu5zpJK/Eu3uJwt6BMgy9fkvzxDaurgj96F/NiLukF2w==", + "version": "4.27.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.27.4.tgz", + "integrity": "sha512-2Y3JT6f5MrQkICUyRVCw4oa0sutfAsgaSsb0Lmmy1Wi2y7X5vT9Euqw4gOsCyy0YfKURBg35nhUKZS4mDcfULw==", "cpu": [ "arm" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "android" ] }, "node_modules/@rollup/rollup-android-arm64": { - "version": "4.22.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.22.4.tgz", - "integrity": "sha512-VXoK5UMrgECLYaMuGuVTOx5kcuap1Jm8g/M83RnCHBKOqvPPmROFJGQaZhGccnsFtfXQ3XYa4/jMCJvZnbJBdA==", + "version": "4.27.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.27.4.tgz", + "integrity": "sha512-wzKRQXISyi9UdCVRqEd0H4cMpzvHYt1f/C3CoIjES6cG++RHKhrBj2+29nPF0IB5kpy9MS71vs07fvrNGAl/iA==", "cpu": [ "arm64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "android" ] }, "node_modules/@rollup/rollup-darwin-arm64": { - "version": "4.22.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.22.4.tgz", - "integrity": "sha512-xMM9ORBqu81jyMKCDP+SZDhnX2QEVQzTcC6G18KlTQEzWK8r/oNZtKuZaCcHhnsa6fEeOBionoyl5JsAbE/36Q==", + "version": "4.27.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.27.4.tgz", + "integrity": "sha512-PlNiRQapift4LNS8DPUHuDX/IdXiLjf8mc5vdEmUR0fF/pyy2qWwzdLjB+iZquGr8LuN4LnUoSEvKRwjSVYz3Q==", "cpu": [ "arm64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "darwin" ] }, "node_modules/@rollup/rollup-darwin-x64": { - "version": "4.22.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.22.4.tgz", - "integrity": "sha512-aJJyYKQwbHuhTUrjWjxEvGnNNBCnmpHDvrb8JFDbeSH3m2XdHcxDd3jthAzvmoI8w/kSjd2y0udT+4okADsZIw==", + "version": "4.27.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.27.4.tgz", + "integrity": "sha512-o9bH2dbdgBDJaXWJCDTNDYa171ACUdzpxSZt+u/AAeQ20Nk5x+IhA+zsGmrQtpkLiumRJEYef68gcpn2ooXhSQ==", "cpu": [ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "darwin" ] }, + "node_modules/@rollup/rollup-freebsd-arm64": { + "version": "4.27.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.27.4.tgz", + "integrity": "sha512-NBI2/i2hT9Q+HySSHTBh52da7isru4aAAo6qC3I7QFVsuhxi2gM8t/EI9EVcILiHLj1vfi+VGGPaLOUENn7pmw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/@rollup/rollup-freebsd-x64": { + "version": "4.27.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.27.4.tgz", + "integrity": "sha512-wYcC5ycW2zvqtDYrE7deary2P2UFmSh85PUpAx+dwTCO9uw3sgzD6Gv9n5X4vLaQKsrfTSZZ7Z7uynQozPVvWA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ] + }, "node_modules/@rollup/rollup-linux-arm-gnueabihf": { - "version": "4.22.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.22.4.tgz", - "integrity": "sha512-j63YtCIRAzbO+gC2L9dWXRh5BFetsv0j0va0Wi9epXDgU/XUi5dJKo4USTttVyK7fGw2nPWK0PbAvyliz50SCQ==", + "version": "4.27.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.27.4.tgz", + "integrity": "sha512-9OwUnK/xKw6DyRlgx8UizeqRFOfi9mf5TYCw1uolDaJSbUmBxP85DE6T4ouCMoN6pXw8ZoTeZCSEfSaYo+/s1w==", "cpu": [ "arm" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" ] }, "node_modules/@rollup/rollup-linux-arm-musleabihf": { - "version": "4.22.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.22.4.tgz", - "integrity": "sha512-dJnWUgwWBX1YBRsuKKMOlXCzh2Wu1mlHzv20TpqEsfdZLb3WoJW2kIEsGwLkroYf24IrPAvOT/ZQ2OYMV6vlrg==", + "version": "4.27.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.27.4.tgz", + "integrity": "sha512-Vgdo4fpuphS9V24WOV+KwkCVJ72u7idTgQaBoLRD0UxBAWTF9GWurJO9YD9yh00BzbkhpeXtm6na+MvJU7Z73A==", "cpu": [ "arm" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" ] }, "node_modules/@rollup/rollup-linux-arm64-gnu": { - "version": "4.22.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.22.4.tgz", - "integrity": "sha512-AdPRoNi3NKVLolCN/Sp4F4N1d98c4SBnHMKoLuiG6RXgoZ4sllseuGioszumnPGmPM2O7qaAX/IJdeDU8f26Aw==", + "version": "4.27.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.27.4.tgz", + "integrity": "sha512-pleyNgyd1kkBkw2kOqlBx+0atfIIkkExOTiifoODo6qKDSpnc6WzUY5RhHdmTdIJXBdSnh6JknnYTtmQyobrVg==", "cpu": [ "arm64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" ] }, "node_modules/@rollup/rollup-linux-arm64-musl": { - "version": "4.22.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.22.4.tgz", - "integrity": "sha512-Gl0AxBtDg8uoAn5CCqQDMqAx22Wx22pjDOjBdmG0VIWX3qUBHzYmOKh8KXHL4UpogfJ14G4wk16EQogF+v8hmA==", + "version": "4.27.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.27.4.tgz", + "integrity": "sha512-caluiUXvUuVyCHr5DxL8ohaaFFzPGmgmMvwmqAITMpV/Q+tPoaHZ/PWa3t8B2WyoRcIIuu1hkaW5KkeTDNSnMA==", "cpu": [ "arm64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" ] }, "node_modules/@rollup/rollup-linux-powerpc64le-gnu": { - "version": "4.22.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.22.4.tgz", - "integrity": "sha512-3aVCK9xfWW1oGQpTsYJJPF6bfpWfhbRnhdlyhak2ZiyFLDaayz0EP5j9V1RVLAAxlmWKTDfS9wyRyY3hvhPoOg==", + "version": "4.27.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.27.4.tgz", + "integrity": "sha512-FScrpHrO60hARyHh7s1zHE97u0KlT/RECzCKAdmI+LEoC1eDh/RDji9JgFqyO+wPDb86Oa/sXkily1+oi4FzJQ==", "cpu": [ "ppc64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" ] }, "node_modules/@rollup/rollup-linux-riscv64-gnu": { - "version": "4.22.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.22.4.tgz", - "integrity": "sha512-ePYIir6VYnhgv2C5Xe9u+ico4t8sZWXschR6fMgoPUK31yQu7hTEJb7bCqivHECwIClJfKgE7zYsh1qTP3WHUA==", + "version": "4.27.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.27.4.tgz", + "integrity": "sha512-qyyprhyGb7+RBfMPeww9FlHwKkCXdKHeGgSqmIXw9VSUtvyFZ6WZRtnxgbuz76FK7LyoN8t/eINRbPUcvXB5fw==", "cpu": [ "riscv64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" ] }, "node_modules/@rollup/rollup-linux-s390x-gnu": { - "version": "4.22.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.22.4.tgz", - "integrity": "sha512-GqFJ9wLlbB9daxhVlrTe61vJtEY99/xB3C8e4ULVsVfflcpmR6c8UZXjtkMA6FhNONhj2eA5Tk9uAVw5orEs4Q==", + "version": "4.27.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.27.4.tgz", + "integrity": "sha512-PFz+y2kb6tbh7m3A7nA9++eInGcDVZUACulf/KzDtovvdTizHpZaJty7Gp0lFwSQcrnebHOqxF1MaKZd7psVRg==", "cpu": [ "s390x" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" ] }, "node_modules/@rollup/rollup-linux-x64-gnu": { - "version": "4.22.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.22.4.tgz", - "integrity": "sha512-87v0ol2sH9GE3cLQLNEy0K/R0pz1nvg76o8M5nhMR0+Q+BBGLnb35P0fVz4CQxHYXaAOhE8HhlkaZfsdUOlHwg==", + "version": "4.27.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.27.4.tgz", + "integrity": "sha512-Ni8mMtfo+o/G7DVtweXXV/Ol2TFf63KYjTtoZ5f078AUgJTmaIJnj4JFU7TK/9SVWTaSJGxPi5zMDgK4w+Ez7Q==", "cpu": [ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" ] }, "node_modules/@rollup/rollup-linux-x64-musl": { - "version": "4.22.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.22.4.tgz", - "integrity": "sha512-UV6FZMUgePDZrFjrNGIWzDo/vABebuXBhJEqrHxrGiU6HikPy0Z3LfdtciIttEUQfuDdCn8fqh7wiFJjCNwO+g==", + "version": "4.27.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.27.4.tgz", + "integrity": "sha512-5AeeAF1PB9TUzD+3cROzFTnAJAcVUGLuR8ng0E0WXGkYhp6RD6L+6szYVX+64Rs0r72019KHZS1ka1q+zU/wUw==", "cpu": [ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" ] }, "node_modules/@rollup/rollup-win32-arm64-msvc": { - "version": "4.22.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.22.4.tgz", - "integrity": "sha512-BjI+NVVEGAXjGWYHz/vv0pBqfGoUH0IGZ0cICTn7kB9PyjrATSkX+8WkguNjWoj2qSr1im/+tTGRaY+4/PdcQw==", + "version": "4.27.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.27.4.tgz", + "integrity": "sha512-yOpVsA4K5qVwu2CaS3hHxluWIK5HQTjNV4tWjQXluMiiiu4pJj4BN98CvxohNCpcjMeTXk/ZMJBRbgRg8HBB6A==", "cpu": [ "arm64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "win32" ] }, "node_modules/@rollup/rollup-win32-ia32-msvc": { - "version": "4.22.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.22.4.tgz", - "integrity": "sha512-SiWG/1TuUdPvYmzmYnmd3IEifzR61Tragkbx9D3+R8mzQqDBz8v+BvZNDlkiTtI9T15KYZhP0ehn3Dld4n9J5g==", + "version": "4.27.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.27.4.tgz", + "integrity": "sha512-KtwEJOaHAVJlxV92rNYiG9JQwQAdhBlrjNRp7P9L8Cb4Rer3in+0A+IPhJC9y68WAi9H0sX4AiG2NTsVlmqJeQ==", "cpu": [ "ia32" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "win32" ] }, "node_modules/@rollup/rollup-win32-x64-msvc": { - "version": "4.22.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.22.4.tgz", - "integrity": "sha512-j8pPKp53/lq9lMXN57S8cFz0MynJk8OWNuUnXct/9KCpKU7DgU3bYMJhwWmcqC0UU29p8Lr0/7KEVcaM6bf47Q==", + "version": "4.27.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.27.4.tgz", + "integrity": "sha512-3j4jx1TppORdTAoBJRd+/wJRGCPC0ETWkXOecJ6PPZLj6SptXkrXcNqdj0oclbKML6FkQltdz7bBA3rUSirZug==", "cpu": [ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "win32" @@ -1514,6 +1629,7 @@ "resolved": "https://registry.npmjs.org/@sentry/babel-plugin-component-annotate/-/babel-plugin-component-annotate-2.22.6.tgz", "integrity": "sha512-V2g1Y1I5eSe7dtUVMBvAJr8BaLRr4CLrgNgtPaZyMT4Rnps82SrZ5zqmEkLXPumlXhLUWR6qzoMNN2u+RXVXfQ==", "dev": true, + "license": "MIT", "engines": { "node": ">= 14" } @@ -1540,6 +1656,7 @@ "resolved": "https://registry.npmjs.org/@sentry/bundler-plugin-core/-/bundler-plugin-core-2.22.6.tgz", "integrity": "sha512-1esQdgSUCww9XAntO4pr7uAM5cfGhLsgTK9MEwAKNfvpMYJi9NUTYa3A7AZmdA8V6107Lo4OD7peIPrDRbaDCg==", "dev": true, + "license": "MIT", "dependencies": { "@babel/core": "^7.18.5", "@sentry/babel-plugin-component-annotate": "2.22.6", @@ -1554,45 +1671,13 @@ "node": ">= 14" } }, - "node_modules/@sentry/bundler-plugin-core/node_modules/glob": { - "version": "9.3.5", - "resolved": "https://registry.npmjs.org/glob/-/glob-9.3.5.tgz", - "integrity": "sha512-e1LleDykUz2Iu+MTYdkSsuWX8lvAjAcs0Xef0lNIu0S2wOAzuTxCJtcd9S3cijlwYF18EsU3rzb8jPVobxDh9Q==", - "dev": true, - "dependencies": { - "fs.realpath": "^1.0.0", - "minimatch": "^8.0.2", - "minipass": "^4.2.4", - "path-scurry": "^1.6.1" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/@sentry/bundler-plugin-core/node_modules/minimatch": { - "version": "8.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-8.0.4.tgz", - "integrity": "sha512-W0Wvr9HyFXZRGIDgCicunpQ299OKXs9RgZfaukz4qAW/pJhcpUfupc9c+OObPOFueNy8VSrZgEmDtk6Kh4WzDA==", - "dev": true, - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, "node_modules/@sentry/cli": { - "version": "2.38.0", - "resolved": "https://registry.npmjs.org/@sentry/cli/-/cli-2.38.0.tgz", - "integrity": "sha512-ld9+1GdPkDaFr6T4SGocxoMcrBB/K6Z37TvBx8IMrDQC+eJDkBFiyqmHnzrj/8xoj5O220pqjPZCfvqzH268sQ==", + "version": "2.39.1", + "resolved": "https://registry.npmjs.org/@sentry/cli/-/cli-2.39.1.tgz", + "integrity": "sha512-JIb3e9vh0+OmQ0KxmexMXg9oZsR/G7HMwxt5BUIKAXZ9m17Xll4ETXTRnRUBT3sf7EpNGAmlQk1xEmVN9pYZYQ==", "dev": true, "hasInstallScript": true, + "license": "BSD-3-Clause", "dependencies": { "https-proxy-agent": "^5.0.0", "node-fetch": "^2.6.7", @@ -1607,20 +1692,21 @@ "node": ">= 10" }, "optionalDependencies": { - "@sentry/cli-darwin": "2.38.0", - "@sentry/cli-linux-arm": "2.38.0", - "@sentry/cli-linux-arm64": "2.38.0", - "@sentry/cli-linux-i686": "2.38.0", - "@sentry/cli-linux-x64": "2.38.0", - "@sentry/cli-win32-i686": "2.38.0", - "@sentry/cli-win32-x64": "2.38.0" + "@sentry/cli-darwin": "2.39.1", + "@sentry/cli-linux-arm": "2.39.1", + "@sentry/cli-linux-arm64": "2.39.1", + "@sentry/cli-linux-i686": "2.39.1", + "@sentry/cli-linux-x64": "2.39.1", + "@sentry/cli-win32-i686": "2.39.1", + "@sentry/cli-win32-x64": "2.39.1" } }, "node_modules/@sentry/cli-darwin": { - "version": "2.38.0", - "resolved": "https://registry.npmjs.org/@sentry/cli-darwin/-/cli-darwin-2.38.0.tgz", - "integrity": "sha512-OvOaV9Vg4+b9ObK2z1oFj3zbRoqOSpD/wSz9t/mtSWwMQi7wlUXj88XGGsL5ZwF7VGBYL+kX59X3Ygl+dHFPlg==", + "version": "2.39.1", + "resolved": "https://registry.npmjs.org/@sentry/cli-darwin/-/cli-darwin-2.39.1.tgz", + "integrity": "sha512-kiNGNSAkg46LNGatfNH5tfsmI/kCAaPA62KQuFZloZiemTNzhy9/6NJP8HZ/GxGs8GDMxic6wNrV9CkVEgFLJQ==", "dev": true, + "license": "BSD-3-Clause", "optional": true, "os": [ "darwin" @@ -1630,13 +1716,14 @@ } }, "node_modules/@sentry/cli-linux-arm": { - "version": "2.38.0", - "resolved": "https://registry.npmjs.org/@sentry/cli-linux-arm/-/cli-linux-arm-2.38.0.tgz", - "integrity": "sha512-lXMSEX1Sv9F2wXnnAlsS+kwy09iLQTfK10n08xzeJLIvUCLua/OFInwH6WUxNT3tIBPfBVQZPR7iQMRycH4Ilw==", + "version": "2.39.1", + "resolved": "https://registry.npmjs.org/@sentry/cli-linux-arm/-/cli-linux-arm-2.39.1.tgz", + "integrity": "sha512-DkENbxyRxUrfLnJLXTA4s5UL/GoctU5Cm4ER1eB7XN7p9WsamFJd/yf2KpltkjEyiTuplv0yAbdjl1KX3vKmEQ==", "cpu": [ "arm" ], "dev": true, + "license": "BSD-3-Clause", "optional": true, "os": [ "linux", @@ -1647,13 +1734,14 @@ } }, "node_modules/@sentry/cli-linux-arm64": { - "version": "2.38.0", - "resolved": "https://registry.npmjs.org/@sentry/cli-linux-arm64/-/cli-linux-arm64-2.38.0.tgz", - "integrity": "sha512-oUiRTyek0Ixe30zoqNlEFsLY07B9hK3FRXKv5lw341rim9PiTteh5tk5ewpuD63K+QjbEAJqp4f3zM19DEASlg==", + "version": "2.39.1", + "resolved": "https://registry.npmjs.org/@sentry/cli-linux-arm64/-/cli-linux-arm64-2.39.1.tgz", + "integrity": "sha512-5VbVJDatolDrWOgaffsEM7znjs0cR8bHt9Bq0mStM3tBolgAeSDHE89NgHggfZR+DJ2VWOy4vgCwkObrUD6NQw==", "cpu": [ "arm64" ], "dev": true, + "license": "BSD-3-Clause", "optional": true, "os": [ "linux", @@ -1664,14 +1752,15 @@ } }, "node_modules/@sentry/cli-linux-i686": { - "version": "2.38.0", - "resolved": "https://registry.npmjs.org/@sentry/cli-linux-i686/-/cli-linux-i686-2.38.0.tgz", - "integrity": "sha512-+luFmbQymDON16O7R/A7bmnkUjtnq1nRSehnnRJjuFCtDABCKatZzBjWvan0KNgzHhCquMSvEqHKzfVSptHeHw==", + "version": "2.39.1", + "resolved": "https://registry.npmjs.org/@sentry/cli-linux-i686/-/cli-linux-i686-2.39.1.tgz", + "integrity": "sha512-pXWVoKXCRrY7N8vc9H7mETiV9ZCz+zSnX65JQCzZxgYrayQPJTc+NPRnZTdYdk5RlAupXaFicBI2GwOCRqVRkg==", "cpu": [ "x86", "ia32" ], "dev": true, + "license": "BSD-3-Clause", "optional": true, "os": [ "linux", @@ -1682,13 +1771,14 @@ } }, "node_modules/@sentry/cli-linux-x64": { - "version": "2.38.0", - "resolved": "https://registry.npmjs.org/@sentry/cli-linux-x64/-/cli-linux-x64-2.38.0.tgz", - "integrity": "sha512-yY593xXbf2W+afyHKDvO4QJwoWQX97/K0NYUAqnpg3TVmIfLV9DNVid+M1w6vKIif6n8UQgAFWtR1Ys4P75mBg==", + "version": "2.39.1", + "resolved": "https://registry.npmjs.org/@sentry/cli-linux-x64/-/cli-linux-x64-2.39.1.tgz", + "integrity": "sha512-IwayNZy+it7FWG4M9LayyUmG1a/8kT9+/IEm67sT5+7dkMIMcpmHDqL8rWcPojOXuTKaOBBjkVdNMBTXy0mXlA==", "cpu": [ "x64" ], "dev": true, + "license": "BSD-3-Clause", "optional": true, "os": [ "linux", @@ -1699,14 +1789,15 @@ } }, "node_modules/@sentry/cli-win32-i686": { - "version": "2.38.0", - "resolved": "https://registry.npmjs.org/@sentry/cli-win32-i686/-/cli-win32-i686-2.38.0.tgz", - "integrity": "sha512-ipDnBvXaMqi0ZbkT/pqB11F4AaicVz5YRoidn5oxi1IJPDUd8qF0mnqabALLH3mAd5TOtKBliY5pllCFG/TvzA==", + "version": "2.39.1", + "resolved": "https://registry.npmjs.org/@sentry/cli-win32-i686/-/cli-win32-i686-2.39.1.tgz", + "integrity": "sha512-NglnNoqHSmE+Dz/wHeIVRnV2bLMx7tIn3IQ8vXGO5HWA2f8zYJGktbkLq1Lg23PaQmeZLPGlja3gBQfZYSG10Q==", "cpu": [ "x86", "ia32" ], "dev": true, + "license": "BSD-3-Clause", "optional": true, "os": [ "win32" @@ -1716,13 +1807,14 @@ } }, "node_modules/@sentry/cli-win32-x64": { - "version": "2.38.0", - "resolved": "https://registry.npmjs.org/@sentry/cli-win32-x64/-/cli-win32-x64-2.38.0.tgz", - "integrity": "sha512-NqlKOqNF8i239mygARkNZK9BPzwWK91j+HPEfCKoHsZKHeBT1JauoipgPykO21qn04erq5pJkA0MsiuNRNQnMA==", + "version": "2.39.1", + "resolved": "https://registry.npmjs.org/@sentry/cli-win32-x64/-/cli-win32-x64-2.39.1.tgz", + "integrity": "sha512-xv0R2CMf/X1Fte3cMWie1NXuHmUyQPDBfCyIt6k6RPFPxAYUgcqgMPznYwVMwWEA1W43PaOkSn3d8ZylsDaETw==", "cpu": [ "x64" ], "dev": true, + "license": "BSD-3-Clause", "optional": true, "os": [ "win32" @@ -1775,6 +1867,7 @@ "resolved": "https://registry.npmjs.org/@sentry/vite-plugin/-/vite-plugin-2.22.6.tgz", "integrity": "sha512-zIieP1VLWQb3wUjFJlwOAoaaJygJhXeUoGd0e/Ha2RLb2eW2S+4gjf6y6NqyY71tZ74LYVZKg/4prB6FAZSMXQ==", "dev": true, + "license": "MIT", "dependencies": { "@sentry/bundler-plugin-core": "2.22.6", "unplugin": "1.0.1" @@ -1787,7 +1880,8 @@ "version": "0.27.8", "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.8.tgz", "integrity": "sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@socket.io/component-emitter": { "version": "3.1.2", @@ -1806,27 +1900,21 @@ } }, "node_modules/@tauri-apps/api": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/@tauri-apps/api/-/api-1.6.0.tgz", - "integrity": "sha512-rqI++FWClU5I2UBp4HXFvl+sBWkdigBkxnpJDQUWttNyG7IZP4FwQGhTNL5EOw0vI8i6eSAJ5frLqO7n7jbJdg==", - "engines": { - "node": ">= 14.6.0", - "npm": ">= 6.6.0", - "yarn": ">= 1.19.1" - }, + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/@tauri-apps/api/-/api-2.1.1.tgz", + "integrity": "sha512-fzUfFFKo4lknXGJq8qrCidkUcKcH2UHhfaaCNt4GzgzGaW2iS26uFOg4tS3H4P8D6ZEeUxtiD5z0nwFF0UN30A==", + "license": "Apache-2.0 OR MIT", "funding": { "type": "opencollective", "url": "https://opencollective.com/tauri" } }, "node_modules/@tauri-apps/cli": { - "version": "1.6.3", - "resolved": "https://registry.npmjs.org/@tauri-apps/cli/-/cli-1.6.3.tgz", - "integrity": "sha512-q46umd6QLRKDd4Gg6WyZBGa2fWvk0pbeUA5vFomm4uOs1/17LIciHv2iQ4UD+2Yv5H7AO8YiE1t50V0POiEGEw==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@tauri-apps/cli/-/cli-2.1.0.tgz", + "integrity": "sha512-K2VhcKqBhAeS5pNOVdnR/xQRU6jwpgmkSL2ejHXcl0m+kaTggT0WRDQnFtPq6NljA7aE03cvwsbCAoFG7vtkJw==", "dev": true, - "dependencies": { - "semver": ">=7.5.2" - }, + "license": "Apache-2.0 OR MIT", "bin": { "tauri": "tauri.js" }, @@ -1838,26 +1926,27 @@ "url": "https://opencollective.com/tauri" }, "optionalDependencies": { - "@tauri-apps/cli-darwin-arm64": "1.6.3", - "@tauri-apps/cli-darwin-x64": "1.6.3", - "@tauri-apps/cli-linux-arm-gnueabihf": "1.6.3", - "@tauri-apps/cli-linux-arm64-gnu": "1.6.3", - "@tauri-apps/cli-linux-arm64-musl": "1.6.3", - "@tauri-apps/cli-linux-x64-gnu": "1.6.3", - "@tauri-apps/cli-linux-x64-musl": "1.6.3", - "@tauri-apps/cli-win32-arm64-msvc": "1.6.3", - "@tauri-apps/cli-win32-ia32-msvc": "1.6.3", - "@tauri-apps/cli-win32-x64-msvc": "1.6.3" + "@tauri-apps/cli-darwin-arm64": "2.1.0", + "@tauri-apps/cli-darwin-x64": "2.1.0", + "@tauri-apps/cli-linux-arm-gnueabihf": "2.1.0", + "@tauri-apps/cli-linux-arm64-gnu": "2.1.0", + "@tauri-apps/cli-linux-arm64-musl": "2.1.0", + "@tauri-apps/cli-linux-x64-gnu": "2.1.0", + "@tauri-apps/cli-linux-x64-musl": "2.1.0", + "@tauri-apps/cli-win32-arm64-msvc": "2.1.0", + "@tauri-apps/cli-win32-ia32-msvc": "2.1.0", + "@tauri-apps/cli-win32-x64-msvc": "2.1.0" } }, "node_modules/@tauri-apps/cli-darwin-arm64": { - "version": "1.6.3", - "resolved": "https://registry.npmjs.org/@tauri-apps/cli-darwin-arm64/-/cli-darwin-arm64-1.6.3.tgz", - "integrity": "sha512-fQN6IYSL8bG4NvkdKE4sAGF4dF/QqqQq4hOAU+t8ksOzHJr0hUlJYfncFeJYutr/MMkdF7hYKadSb0j5EE9r0A==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@tauri-apps/cli-darwin-arm64/-/cli-darwin-arm64-2.1.0.tgz", + "integrity": "sha512-ESc6J6CE8hl1yKH2vJ+ALF+thq4Be+DM1mvmTyUCQObvezNCNhzfS6abIUd3ou4x5RGH51ouiANeT3wekU6dCw==", "cpu": [ "arm64" ], "dev": true, + "license": "Apache-2.0 OR MIT", "optional": true, "os": [ "darwin" @@ -1867,13 +1956,14 @@ } }, "node_modules/@tauri-apps/cli-darwin-x64": { - "version": "1.6.3", - "resolved": "https://registry.npmjs.org/@tauri-apps/cli-darwin-x64/-/cli-darwin-x64-1.6.3.tgz", - "integrity": "sha512-1yTXZzLajKAYINJOJhZfmMhCzweHSgKQ3bEgJSn6t+1vFkOgY8Yx4oFgWcybrrWI5J1ZLZAl47+LPOY81dLcyA==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@tauri-apps/cli-darwin-x64/-/cli-darwin-x64-2.1.0.tgz", + "integrity": "sha512-TasHS442DFs8cSH2eUQzuDBXUST4ECjCd0yyP+zZzvAruiB0Bg+c8A+I/EnqCvBQ2G2yvWLYG8q/LI7c87A5UA==", "cpu": [ "x64" ], "dev": true, + "license": "Apache-2.0 OR MIT", "optional": true, "os": [ "darwin" @@ -1883,13 +1973,14 @@ } }, "node_modules/@tauri-apps/cli-linux-arm-gnueabihf": { - "version": "1.6.3", - "resolved": "https://registry.npmjs.org/@tauri-apps/cli-linux-arm-gnueabihf/-/cli-linux-arm-gnueabihf-1.6.3.tgz", - "integrity": "sha512-CjTEr9r9xgjcvos09AQw8QMRPuH152B1jvlZt4PfAsyJNPFigzuwed5/SF7XAd8bFikA7zArP4UT12RdBxrx7w==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@tauri-apps/cli-linux-arm-gnueabihf/-/cli-linux-arm-gnueabihf-2.1.0.tgz", + "integrity": "sha512-aP7ZBGNL4ny07Cbb6kKpUOSrmhcIK2KhjviTzYlh+pPhAptxnC78xQGD3zKQkTi2WliJLPmBYbOHWWQa57lQ9w==", "cpu": [ "arm" ], "dev": true, + "license": "Apache-2.0 OR MIT", "optional": true, "os": [ "linux" @@ -1899,13 +1990,14 @@ } }, "node_modules/@tauri-apps/cli-linux-arm64-gnu": { - "version": "1.6.3", - "resolved": "https://registry.npmjs.org/@tauri-apps/cli-linux-arm64-gnu/-/cli-linux-arm64-gnu-1.6.3.tgz", - "integrity": "sha512-G9EUUS4M8M/Jz1UKZqvJmQQCKOzgTb8/0jZKvfBuGfh5AjFBu8LHvlFpwkKVm1l4951Xg4ulUp6P9Q7WRJ9XSA==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@tauri-apps/cli-linux-arm64-gnu/-/cli-linux-arm64-gnu-2.1.0.tgz", + "integrity": "sha512-ZTdgD5gLeMCzndMT2f358EkoYkZ5T+Qy6zPzU+l5vv5M7dHVN9ZmblNAYYXmoOuw7y+BY4X/rZvHV9pcGrcanQ==", "cpu": [ "arm64" ], "dev": true, + "license": "Apache-2.0 OR MIT", "optional": true, "os": [ "linux" @@ -1915,13 +2007,14 @@ } }, "node_modules/@tauri-apps/cli-linux-arm64-musl": { - "version": "1.6.3", - "resolved": "https://registry.npmjs.org/@tauri-apps/cli-linux-arm64-musl/-/cli-linux-arm64-musl-1.6.3.tgz", - "integrity": "sha512-MuBTHJyNpZRbPVG8IZBN8+Zs7aKqwD22tkWVBcL1yOGL4zNNTJlkfL+zs5qxRnHlUsn6YAlbW/5HKocfpxVwBw==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@tauri-apps/cli-linux-arm64-musl/-/cli-linux-arm64-musl-2.1.0.tgz", + "integrity": "sha512-NzwqjUCilhnhJzusz3d/0i0F1GFrwCQbkwR6yAHUxItESbsGYkZRJk0yMEWkg3PzFnyK4cWTlQJMEU52TjhEzA==", "cpu": [ "arm64" ], "dev": true, + "license": "Apache-2.0 OR MIT", "optional": true, "os": [ "linux" @@ -1931,13 +2024,14 @@ } }, "node_modules/@tauri-apps/cli-linux-x64-gnu": { - "version": "1.6.3", - "resolved": "https://registry.npmjs.org/@tauri-apps/cli-linux-x64-gnu/-/cli-linux-x64-gnu-1.6.3.tgz", - "integrity": "sha512-Uvi7M+NK3tAjCZEY1WGel+dFlzJmqcvu3KND+nqa22762NFmOuBIZ4KJR/IQHfpEYqKFNUhJfCGnpUDfiC3Oxg==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@tauri-apps/cli-linux-x64-gnu/-/cli-linux-x64-gnu-2.1.0.tgz", + "integrity": "sha512-TyiIpMEtZxNOQmuFyfJwaaYbg3movSthpBJLIdPlKxSAB2BW0VWLY3/ZfIxm/G2YGHyREkjJvimzYE0i37PnMA==", "cpu": [ "x64" ], "dev": true, + "license": "Apache-2.0 OR MIT", "optional": true, "os": [ "linux" @@ -1947,13 +2041,14 @@ } }, "node_modules/@tauri-apps/cli-linux-x64-musl": { - "version": "1.6.3", - "resolved": "https://registry.npmjs.org/@tauri-apps/cli-linux-x64-musl/-/cli-linux-x64-musl-1.6.3.tgz", - "integrity": "sha512-rc6B342C0ra8VezB/OJom9j/N+9oW4VRA4qMxS2f4bHY2B/z3J9NPOe6GOILeg4v/CV62ojkLsC3/K/CeF3fqQ==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@tauri-apps/cli-linux-x64-musl/-/cli-linux-x64-musl-2.1.0.tgz", + "integrity": "sha512-/dQd0TlaxBdJACrR72DhynWftzHDaX32eBtS5WBrNJ+nnNb+znM3gON6nJ9tSE9jgDa6n1v2BkI/oIDtypfUXw==", "cpu": [ "x64" ], "dev": true, + "license": "Apache-2.0 OR MIT", "optional": true, "os": [ "linux" @@ -1963,13 +2058,14 @@ } }, "node_modules/@tauri-apps/cli-win32-arm64-msvc": { - "version": "1.6.3", - "resolved": "https://registry.npmjs.org/@tauri-apps/cli-win32-arm64-msvc/-/cli-win32-arm64-msvc-1.6.3.tgz", - "integrity": "sha512-cSH2qOBYuYC4UVIFtrc1YsGfc5tfYrotoHrpTvRjUGu0VywvmyNk82+ZsHEnWZ2UHmu3l3lXIGRqSWveLln0xg==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@tauri-apps/cli-win32-arm64-msvc/-/cli-win32-arm64-msvc-2.1.0.tgz", + "integrity": "sha512-NdQJO7SmdYqOcE+JPU7bwg7+odfZMWO6g8xF9SXYCMdUzvM2Gv/AQfikNXz5yS7ralRhNFuW32i5dcHlxh4pDg==", "cpu": [ "arm64" ], "dev": true, + "license": "Apache-2.0 OR MIT", "optional": true, "os": [ "win32" @@ -1979,13 +2075,14 @@ } }, "node_modules/@tauri-apps/cli-win32-ia32-msvc": { - "version": "1.6.3", - "resolved": "https://registry.npmjs.org/@tauri-apps/cli-win32-ia32-msvc/-/cli-win32-ia32-msvc-1.6.3.tgz", - "integrity": "sha512-T8V6SJQqE4PSWmYBl0ChQVmS6AR2hXFHURH2DwAhgSGSQ6uBXgwlYFcfIeQpBQA727K2Eq8X2hGfvmoySyHMRw==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@tauri-apps/cli-win32-ia32-msvc/-/cli-win32-ia32-msvc-2.1.0.tgz", + "integrity": "sha512-f5h8gKT/cB8s1ticFRUpNmHqkmaLutT62oFDB7N//2YTXnxst7EpMIn1w+QimxTvTk2gcx6EcW6bEk/y2hZGzg==", "cpu": [ "ia32" ], "dev": true, + "license": "Apache-2.0 OR MIT", "optional": true, "os": [ "win32" @@ -1995,13 +2092,14 @@ } }, "node_modules/@tauri-apps/cli-win32-x64-msvc": { - "version": "1.6.3", - "resolved": "https://registry.npmjs.org/@tauri-apps/cli-win32-x64-msvc/-/cli-win32-x64-msvc-1.6.3.tgz", - "integrity": "sha512-HUkWZ+lYHI/Gjkh2QjHD/OBDpqLVmvjZGpLK9losur1Eg974Jip6k+vsoTUxQBCBDfj30eDBct9E1FvXOspWeg==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@tauri-apps/cli-win32-x64-msvc/-/cli-win32-x64-msvc-2.1.0.tgz", + "integrity": "sha512-P/+LrdSSb5Xbho1LRP4haBjFHdyPdjWvGgeopL96OVtrFpYnfC+RctB45z2V2XxqFk3HweDDxk266btjttfjGw==", "cpu": [ "x64" ], "dev": true, + "license": "Apache-2.0 OR MIT", "optional": true, "os": [ "win32" @@ -2010,11 +2108,48 @@ "node": ">= 10" } }, + "node_modules/@tauri-apps/plugin-os": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@tauri-apps/plugin-os/-/plugin-os-2.0.0.tgz", + "integrity": "sha512-M7hG/nNyQYTJxVG/UhTKhp9mpXriwWzrs9mqDreB8mIgqA3ek5nHLdwRZJWhkKjZrnDT4v9CpA9BhYeplTlAiA==", + "license": "MIT OR Apache-2.0", + "dependencies": { + "@tauri-apps/api": "^2.0.0" + } + }, + "node_modules/@tauri-apps/plugin-process": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@tauri-apps/plugin-process/-/plugin-process-2.0.0.tgz", + "integrity": "sha512-OYzi0GnkrF4NAnsHZU7U3tjSoP0PbeAlO7T1Z+vJoBUH9sFQ1NSLqWYWQyf8hcb3gVWe7P1JggjiskO+LST1ug==", + "license": "MIT OR Apache-2.0", + "dependencies": { + "@tauri-apps/api": "^2.0.0" + } + }, + "node_modules/@tauri-apps/plugin-shell": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@tauri-apps/plugin-shell/-/plugin-shell-2.0.1.tgz", + "integrity": "sha512-akU1b77sw3qHiynrK0s930y8zKmcdrSD60htjH+mFZqv5WaakZA/XxHR3/sF1nNv9Mgmt/Shls37HwnOr00aSw==", + "license": "MIT OR Apache-2.0", + "dependencies": { + "@tauri-apps/api": "^2.0.0" + } + }, + "node_modules/@tauri-apps/plugin-updater": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@tauri-apps/plugin-updater/-/plugin-updater-2.0.0.tgz", + "integrity": "sha512-N0cl71g7RPr7zK2Fe5aoIwzw14NcdLcz7XMGFWZVjprsqgDRWoxbnUkknyCQMZthjhGkppCd/wN2MIsUz+eAhQ==", + "license": "MIT OR Apache-2.0", + "dependencies": { + "@tauri-apps/api": "^2.0.0" + } + }, "node_modules/@types/babel__core": { "version": "7.20.5", "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz", "integrity": "sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==", "dev": true, + "license": "MIT", "dependencies": { "@babel/parser": "^7.20.7", "@babel/types": "^7.20.7", @@ -2028,6 +2163,7 @@ "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.8.tgz", "integrity": "sha512-ASsj+tpEDsEiFr1arWrlN6V3mdfjRMZt6LtK/Vp/kreFLnr5QH5+DhvD5nINYZXzwJvXeGq+05iUXcAzVrqWtw==", "dev": true, + "license": "MIT", "dependencies": { "@babel/types": "^7.0.0" } @@ -2037,6 +2173,7 @@ "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.4.tgz", "integrity": "sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==", "dev": true, + "license": "MIT", "dependencies": { "@babel/parser": "^7.1.0", "@babel/types": "^7.0.0" @@ -2047,6 +2184,7 @@ "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.20.6.tgz", "integrity": "sha512-r1bzfrm0tomOI8g1SzvCaQHo6Lcv6zu0EA+W2kHrt8dyrHQxGzBBL4kdkzIS+jBMV+EYcMAEAqXqYaLJq5rOZg==", "dev": true, + "license": "MIT", "dependencies": { "@babel/types": "^7.20.7" } @@ -2065,6 +2203,7 @@ "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-9.6.1.tgz", "integrity": "sha512-FXx2pKgId/WyYo2jXw63kk7/+TY7u7AziEJxJAnSFzHlqTAS3Ync6SvgYAN/k4/PQpnnVuzoMuVnByKK2qp0ag==", "dev": true, + "license": "MIT", "dependencies": { "@types/estree": "*", "@types/json-schema": "*" @@ -2075,14 +2214,16 @@ "resolved": "https://registry.npmjs.org/@types/eslint__js/-/eslint__js-8.42.3.tgz", "integrity": "sha512-alfG737uhmPdnvkrLdZLcEKJ/B8s9Y4hrZ+YAdzUeoArBlSUERA2E87ROfOaS4jd/C45fzOoZzidLc1IPwLqOw==", "dev": true, + "license": "MIT", "dependencies": { "@types/eslint": "*" } }, "node_modules/@types/estree": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.5.tgz", - "integrity": "sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==" + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.6.tgz", + "integrity": "sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==", + "license": "MIT" }, "node_modules/@types/estree-jsx": { "version": "1.0.5", @@ -2106,7 +2247,8 @@ "version": "7.0.15", "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@types/mdast": { "version": "4.0.4", @@ -2142,6 +2284,7 @@ "version": "18.3.12", "resolved": "https://registry.npmjs.org/@types/react/-/react-18.3.12.tgz", "integrity": "sha512-D2wOSq/d6Agt28q7rSI3jhU7G6aiuzljDGZ2hTZHIkrTLUI+AF3WMeKkEZ9nN2fkBAlcktT6vcZjDFiIhMYEQw==", + "license": "MIT", "dependencies": { "@types/prop-types": "*", "csstype": "^3.0.2" @@ -2152,6 +2295,7 @@ "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.3.1.tgz", "integrity": "sha512-qW1Mfv8taImTthu4KoXgDfLuk4bydU6Q/TkADnDWWHwi4NX4BR+LWfTp2sVmTqRrsHvyDDTelgelxJ+SsejKKQ==", "dev": true, + "license": "MIT", "dependencies": { "@types/react": "*" } @@ -2159,7 +2303,8 @@ "node_modules/@types/stylis": { "version": "4.2.5", "resolved": "https://registry.npmjs.org/@types/stylis/-/stylis-4.2.5.tgz", - "integrity": "sha512-1Xve+NMN7FWjY14vLoY5tL3BVEQ/n42YLwaqJIPYhotZ9uBHt87VceMwWQpzmdEt2TNXIorIFG+YeCUUW7RInw==" + "integrity": "sha512-1Xve+NMN7FWjY14vLoY5tL3BVEQ/n42YLwaqJIPYhotZ9uBHt87VceMwWQpzmdEt2TNXIorIFG+YeCUUW7RInw==", + "license": "MIT" }, "node_modules/@types/unist": { "version": "3.0.3", @@ -2171,7 +2316,8 @@ "version": "10.0.0", "resolved": "https://registry.npmjs.org/@types/uuid/-/uuid-10.0.0.tgz", "integrity": "sha512-7gqG38EyHgyP1S+7+xomFtL+ZNHcKv6DwNaCZmJmo1vgMugyF3TCnXVg4t1uk89mLNwnLtnY3TpOpCOyp1/xHQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@typescript-eslint/eslint-plugin": { "version": "8.16.0", @@ -2325,6 +2471,19 @@ } } }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/semver": { + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", + "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/@typescript-eslint/utils": { "version": "8.16.0", "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.16.0.tgz", @@ -2371,23 +2530,11 @@ "url": "https://opencollective.com/typescript-eslint" } }, - "node_modules/@typescript-eslint/visitor-keys/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==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, "node_modules/@ungap/structured-clone": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.0.tgz", - "integrity": "sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==" + "integrity": "sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==", + "license": "ISC" }, "node_modules/@vitejs/plugin-react": { "version": "4.3.4", @@ -2414,6 +2561,7 @@ "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.14.0.tgz", "integrity": "sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA==", "dev": true, + "license": "MIT", "bin": { "acorn": "bin/acorn" }, @@ -2426,6 +2574,7 @@ "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", "dev": true, + "license": "MIT", "peerDependencies": { "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" } @@ -2435,6 +2584,7 @@ "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" }, @@ -2447,6 +2597,7 @@ "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", "dev": true, + "license": "MIT", "dependencies": { "fast-deep-equal": "^3.1.1", "fast-json-stable-stringify": "^2.0.0", @@ -2459,12 +2610,13 @@ } }, "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==", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==", "dev": true, + "license": "MIT", "engines": { - "node": ">=8" + "node": ">=0.10.0" } }, "node_modules/ansi-styles": { @@ -2472,6 +2624,7 @@ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, + "license": "MIT", "dependencies": { "color-convert": "^2.0.1" }, @@ -2487,6 +2640,7 @@ "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", "dev": true, + "license": "ISC", "dependencies": { "normalize-path": "^3.0.0", "picomatch": "^2.0.4" @@ -2499,13 +2653,15 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", - "dev": true + "dev": true, + "license": "Python-2.0" }, "node_modules/array-buffer-byte-length": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.1.tgz", "integrity": "sha512-ahC5W1xgou+KTXix4sAO8Ki12Q+jf4i0+tmk3sC+zgcynshkHxzpXdImBehiUYKKKDwvfFiJl1tZt6ewscS1Mg==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.5", "is-array-buffer": "^3.0.4" @@ -2522,6 +2678,7 @@ "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.8.tgz", "integrity": "sha512-itaWrbYbqpGXkGhZPGUulwnhVf5Hpy1xiCFsGqyIGglbBxmG5vSjxQen3/WGOjPpNEv1RtBLKxbmVXm8HpJStQ==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.7", "define-properties": "^1.2.1", @@ -2542,6 +2699,7 @@ "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } @@ -2551,6 +2709,7 @@ "resolved": "https://registry.npmjs.org/array.prototype.findlast/-/array.prototype.findlast-1.2.5.tgz", "integrity": "sha512-CVvd6FHg1Z3POpBLxO6E6zr+rSKEQ9L6rZHAaY7lLfhKsWYUBBOuMs0e9o24oopj6H+geRCX0YJ+TJLBK2eHyQ==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.7", "define-properties": "^1.2.1", @@ -2571,6 +2730,7 @@ "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.2.tgz", "integrity": "sha512-djYB+Zx2vLewY8RWlNCUdHjDXs2XOgm602S9E7P/UpHgfeHL00cRiIF+IN/G/aUJ7kGPb6yO/ErDI5V2s8iycA==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.2", "define-properties": "^1.2.0", @@ -2589,6 +2749,7 @@ "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.2.tgz", "integrity": "sha512-Ewyx0c9PmpcsByhSW4r+9zDU7sGjFc86qf/kKtuSCRdhfbk0SNLLkaT5qvcHnRGgc5NP/ly/y+qkXkqONX54CQ==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.2", "define-properties": "^1.2.0", @@ -2607,6 +2768,7 @@ "resolved": "https://registry.npmjs.org/array.prototype.tosorted/-/array.prototype.tosorted-1.1.4.tgz", "integrity": "sha512-p6Fx8B7b7ZhL/gmUsAy0D15WhvDccw3mnGNbZpi3pmeJdxtWsj2jEaI4Y6oo3XiHfzuSgPwKc04MYt6KgvC/wA==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.7", "define-properties": "^1.2.1", @@ -2623,6 +2785,7 @@ "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.3.tgz", "integrity": "sha512-bMxMKAjg13EBSVscxTaYA4mRc5t1UAXa2kXiGTNfZ079HIWXEkKmkgFrh/nJqamaLSrXO5H4WFFkPEaLJWbs3A==", "dev": true, + "license": "MIT", "dependencies": { "array-buffer-byte-length": "^1.0.1", "call-bind": "^1.0.5", @@ -2645,6 +2808,7 @@ "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz", "integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==", "dev": true, + "license": "MIT", "dependencies": { "possible-typed-array-names": "^1.0.0" }, @@ -2660,6 +2824,7 @@ "resolved": "https://registry.npmjs.org/babel-plugin-styled-components/-/babel-plugin-styled-components-2.1.4.tgz", "integrity": "sha512-Xgp9g+A/cG47sUyRwwYxGM4bR/jDRg5N6it/8+HxCnbT5XNKSKDT9xm4oag/osgqjC2It/vH0yXsomOG6k558g==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-annotate-as-pure": "^7.22.5", "@babel/helper-module-imports": "^7.22.5", @@ -2685,13 +2850,15 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/binary-extensions": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz", "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" }, @@ -2704,6 +2871,7 @@ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", "dev": true, + "license": "MIT", "dependencies": { "balanced-match": "^1.0.0" } @@ -2713,6 +2881,7 @@ "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", "dev": true, + "license": "MIT", "dependencies": { "fill-range": "^7.1.1" }, @@ -2758,6 +2927,7 @@ "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz", "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==", "dev": true, + "license": "MIT", "dependencies": { "es-define-property": "^1.0.0", "es-errors": "^1.3.0", @@ -2777,6 +2947,7 @@ "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=6" } @@ -2785,6 +2956,7 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/camelize/-/camelize-1.0.1.tgz", "integrity": "sha512-dU+Tx2fsypxTgtLoE36npi3UqcjSSMNYfkqgmoEhtZrraP5VWq0K7FkWVTYa8eMPtnU/G2txVsfdCJTn9uzpuQ==", + "license": "MIT", "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -2825,6 +2997,7 @@ "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, + "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -2881,6 +3054,7 @@ "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", "dev": true, + "license": "MIT", "dependencies": { "anymatch": "~3.1.2", "braces": "~3.0.2", @@ -2905,6 +3079,7 @@ "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", "dev": true, + "license": "ISC", "dependencies": { "is-glob": "^4.0.1" }, @@ -2917,6 +3092,7 @@ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, + "license": "MIT", "dependencies": { "color-name": "~1.1.4" }, @@ -2928,7 +3104,8 @@ "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/comma-separated-tokens": { "version": "2.0.3", @@ -2945,6 +3122,7 @@ "resolved": "https://registry.npmjs.org/common-tags/-/common-tags-1.8.2.tgz", "integrity": "sha512-gk/Z852D2Wtb//0I+kRFNKKE9dIIVirjoqPoA1wJU+XePVXZfGeBpk45+A1rKO4Q43prqWBNY/MiIeRLbPWUaA==", "dev": true, + "license": "MIT", "engines": { "node": ">=4.0.0" } @@ -2953,27 +3131,31 @@ "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/convert-source-map": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/cross-fetch": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-4.0.0.tgz", "integrity": "sha512-e4a5N8lVvuLgAWgnCrLr2PP0YyDOTHa9H/Rj54dirp61qXnNq46m82bRhNqIA5VccJtWBvPTFRV3TtvHUKPB1g==", + "license": "MIT", "dependencies": { "node-fetch": "^2.6.12" } }, "node_modules/cross-spawn": { - "version": "7.0.5", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.5.tgz", - "integrity": "sha512-ZVJrKKYunU38/76t0RMOulHOnUcbU9GbpWKAOZ0mhjr7CX6FVrH+4FrAapSOekrgFQ3f/8gwMEuIft0aKq6Hug==", + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", + "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", "dev": true, + "license": "MIT", "dependencies": { "path-key": "^3.1.0", "shebang-command": "^2.0.0", @@ -2987,6 +3169,7 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/css-color-keywords/-/css-color-keywords-1.0.0.tgz", "integrity": "sha512-FyyrDHZKEjXDpNJYvVsV960FiqQyXc/LlYmsxl2BcdMb2WPx0OGRVgTg55rPSyLSNMqP52R9r8geSp7apN3Ofg==", + "license": "ISC", "engines": { "node": ">=4" } @@ -2995,6 +3178,7 @@ "version": "3.2.0", "resolved": "https://registry.npmjs.org/css-to-react-native/-/css-to-react-native-3.2.0.tgz", "integrity": "sha512-e8RKaLXMOFii+02mOlqwjbD00KSEKqblnpO9e++1aXS1fPQOpS1YoqdVHBqPjHNoxeF2mimzVqawm2KCbEdtHQ==", + "license": "MIT", "dependencies": { "camelize": "^1.0.0", "css-color-keywords": "^1.0.0", @@ -3004,13 +3188,15 @@ "node_modules/csstype": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz", - "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==" + "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==", + "license": "MIT" }, "node_modules/data-view-buffer": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/data-view-buffer/-/data-view-buffer-1.0.1.tgz", "integrity": "sha512-0lht7OugA5x3iJLOWFhWK/5ehONdprk0ISXqVFn/NFrDu+cuc8iADFrGQz5BnRK7LLU3JmkbXSxaqX+/mXYtUA==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.6", "es-errors": "^1.3.0", @@ -3028,6 +3214,7 @@ "resolved": "https://registry.npmjs.org/data-view-byte-length/-/data-view-byte-length-1.0.1.tgz", "integrity": "sha512-4J7wRJD3ABAzr8wP+OcIcqq2dlUKp4DVflx++hs5h5ZKydWMI6/D/fAot+yh6g2tHh8fLFTvNOaVN357NvSrOQ==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.7", "es-errors": "^1.3.0", @@ -3045,6 +3232,7 @@ "resolved": "https://registry.npmjs.org/data-view-byte-offset/-/data-view-byte-offset-1.0.0.tgz", "integrity": "sha512-t/Ygsytq+R995EJ5PZlD4Cu56sWa8InXySaViRzw9apusqsOO2bQP+SbYzAhR0pFKoB+43lYy8rWban9JSuXnA==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.6", "es-errors": "^1.3.0", @@ -3058,11 +3246,12 @@ } }, "node_modules/debug": { - "version": "4.3.6", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.6.tgz", - "integrity": "sha512-O/09Bd4Z1fBrU4VzkhFqVgpPzaGbw6Sm9FEkBT1A/YBXQFGuuSxa1dN2nxgxS34JmKXqYx8CZAwEVoJFImUXIg==", + "version": "4.3.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz", + "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==", + "license": "MIT", "dependencies": { - "ms": "2.1.2" + "ms": "^2.1.3" }, "engines": { "node": ">=6.0" @@ -3090,13 +3279,15 @@ "version": "0.1.4", "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/define-data-property": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", "dev": true, + "license": "MIT", "dependencies": { "es-define-property": "^1.0.0", "es-errors": "^1.3.0", @@ -3114,6 +3305,7 @@ "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", "dev": true, + "license": "MIT", "dependencies": { "define-data-property": "^1.0.1", "has-property-descriptors": "^1.0.0", @@ -3153,6 +3345,7 @@ "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", "dev": true, + "license": "MIT", "dependencies": { "path-type": "^4.0.0" }, @@ -3164,13 +3357,15 @@ "version": "1.1.3", "resolved": "https://registry.npmjs.org/dlv/-/dlv-1.1.3.tgz", "integrity": "sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/doctrine": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", "dev": true, + "license": "Apache-2.0", "dependencies": { "esutils": "^2.0.2" }, @@ -3183,6 +3378,7 @@ "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.4.5.tgz", "integrity": "sha512-ZmdL2rui+eB2YwhsWzjInR8LldtZHGDoQ1ugH85ppHKwpUHL7j7rN0Ti9NCnGiQbhaZ11FpR+7ao1dNsmduNUg==", "dev": true, + "license": "BSD-2-Clause", "engines": { "node": ">=12" }, @@ -3191,9 +3387,9 @@ } }, "node_modules/electron-to-chromium": { - "version": "1.5.66", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.66.tgz", - "integrity": "sha512-pI2QF6+i+zjPbqRzJwkMvtvkdI7MjVbSh2g8dlMguDJIXEPw+kwasS1Jl+YGPEBfGVxsVgGUratAKymPdPo2vQ==", + "version": "1.5.67", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.67.tgz", + "integrity": "sha512-nz88NNBsD7kQSAGGJyp8hS6xSPtWwqNogA0mjtc2nUYeEf3nURK9qpV18TuBdDmEDgVWotS8Wkzf+V52dSQ/LQ==", "dev": true, "license": "ISC" }, @@ -3204,9 +3400,9 @@ "license": "MIT" }, "node_modules/engine.io-client": { - "version": "6.6.1", - "resolved": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-6.6.1.tgz", - "integrity": "sha512-aYuoak7I+R83M/BBPIOs2to51BmFIpC1wZe6zZzMrT2llVsHy5cvcmdsJgP2Qz6smHu+sD9oexiSUAVd8OfBPw==", + "version": "6.6.2", + "resolved": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-6.6.2.tgz", + "integrity": "sha512-TAr+NKeoVTjEVW8P3iHguO1LO6RlUz9O5Y8o7EY0fU+gY1NYqas7NN3slpFtbXEsLMHk0h90fJMfKjRkQ0qUIw==", "license": "MIT", "dependencies": { "@socket.io/component-emitter": "~3.1.0", @@ -3226,10 +3422,11 @@ } }, "node_modules/es-abstract": { - "version": "1.23.3", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.23.3.tgz", - "integrity": "sha512-e+HfNH61Bj1X9/jLc5v1owaLYuHdeHHSQlkhCBiTK8rBvKaULl/beGMxwrMXjpYrv4pz22BlY570vVePA2ho4A==", + "version": "1.23.5", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.23.5.tgz", + "integrity": "sha512-vlmniQ0WNPwXqA0BnmwV3Ng7HxiGlh6r5U6JcTMNx8OilcAGqVJBHJcPjqOMaczU9fRuRK5Px2BdVyPRnKMMVQ==", "dev": true, + "license": "MIT", "dependencies": { "array-buffer-byte-length": "^1.0.1", "arraybuffer.prototype.slice": "^1.0.3", @@ -3246,7 +3443,7 @@ "function.prototype.name": "^1.1.6", "get-intrinsic": "^1.2.4", "get-symbol-description": "^1.0.2", - "globalthis": "^1.0.3", + "globalthis": "^1.0.4", "gopd": "^1.0.1", "has-property-descriptors": "^1.0.2", "has-proto": "^1.0.3", @@ -3262,10 +3459,10 @@ "is-string": "^1.0.7", "is-typed-array": "^1.1.13", "is-weakref": "^1.0.2", - "object-inspect": "^1.13.1", + "object-inspect": "^1.13.3", "object-keys": "^1.1.1", "object.assign": "^4.1.5", - "regexp.prototype.flags": "^1.5.2", + "regexp.prototype.flags": "^1.5.3", "safe-array-concat": "^1.1.2", "safe-regex-test": "^1.0.3", "string.prototype.trim": "^1.2.9", @@ -3290,6 +3487,7 @@ "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.0.tgz", "integrity": "sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==", "dev": true, + "license": "MIT", "dependencies": { "get-intrinsic": "^1.2.4" }, @@ -3302,15 +3500,17 @@ "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.4" } }, "node_modules/es-iterator-helpers": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/es-iterator-helpers/-/es-iterator-helpers-1.1.0.tgz", - "integrity": "sha512-/SurEfycdyssORP/E+bj4sEu1CWw4EmLDsHynHwSXQ7utgbrMRWW195pTrCjFgFCddf/UkYm3oqKPRq5i8bJbw==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/es-iterator-helpers/-/es-iterator-helpers-1.2.0.tgz", + "integrity": "sha512-tpxqxncxnpw3c93u8n3VOzACmRFoVmWJqbWXvX/JfKbkhBw1oslgPrUfeSt2psuqyEJFD6N/9lg5i7bsKpoq+Q==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.7", "define-properties": "^1.2.1", @@ -3320,6 +3520,7 @@ "function-bind": "^1.1.2", "get-intrinsic": "^1.2.4", "globalthis": "^1.0.4", + "gopd": "^1.0.1", "has-property-descriptors": "^1.0.2", "has-proto": "^1.0.3", "has-symbols": "^1.0.3", @@ -3336,6 +3537,7 @@ "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.0.0.tgz", "integrity": "sha512-MZ4iQ6JwHOBQjahnjwaC1ZtIBH+2ohjamzAO3oaHcXYup7qxjF2fixyH+Q71voWHeOkI2q/TnJao/KfXYIZWbw==", "dev": true, + "license": "MIT", "dependencies": { "es-errors": "^1.3.0" }, @@ -3348,6 +3550,7 @@ "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.3.tgz", "integrity": "sha512-3T8uNMC3OQTHkFUsFq8r/BwAXLHvU/9O9mE0fBc/MY5iq/8H7ncvO947LmYA6ldWw9Uh8Yhf25zu6n7nML5QWQ==", "dev": true, + "license": "MIT", "dependencies": { "get-intrinsic": "^1.2.4", "has-tostringtag": "^1.0.2", @@ -3362,19 +3565,21 @@ "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.2.tgz", "integrity": "sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw==", "dev": true, + "license": "MIT", "dependencies": { "hasown": "^2.0.0" } }, "node_modules/es-to-primitive": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", - "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.3.0.tgz", + "integrity": "sha512-w+5mJ3GuFL+NjVtJlvydShqE1eN3h3PbI7/5LAsYJP/2qtuMXjfL2LpHSRqo4b4eSF5K/DH1JXKUAHSB2UW50g==", "dev": true, + "license": "MIT", "dependencies": { - "is-callable": "^1.1.4", - "is-date-object": "^1.0.1", - "is-symbol": "^1.0.2" + "is-callable": "^1.2.7", + "is-date-object": "^1.0.5", + "is-symbol": "^1.0.4" }, "engines": { "node": ">= 0.4" @@ -3389,6 +3594,7 @@ "integrity": "sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==", "devOptional": true, "hasInstallScript": true, + "license": "MIT", "bin": { "esbuild": "bin/esbuild" }, @@ -3436,6 +3642,7 @@ "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", "dev": true, + "license": "MIT", "engines": { "node": ">=10" }, @@ -3444,26 +3651,27 @@ } }, "node_modules/eslint": { - "version": "9.14.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.14.0.tgz", - "integrity": "sha512-c2FHsVBr87lnUtjP4Yhvk4yEhKrQavGafRA/Se1ouse8PfbfC/Qh9Mxa00yWsZRlqeUB9raXip0aiiUZkgnr9g==", + "version": "9.15.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.15.0.tgz", + "integrity": "sha512-7CrWySmIibCgT1Os28lUU6upBshZ+GxybLOrmRzi08kS8MBuO8QA7pXEgYgY5W8vK3e74xv0lpjo9DbaGU9Rkw==", "dev": true, + "license": "MIT", "dependencies": { "@eslint-community/eslint-utils": "^4.2.0", "@eslint-community/regexpp": "^4.12.1", - "@eslint/config-array": "^0.18.0", - "@eslint/core": "^0.7.0", - "@eslint/eslintrc": "^3.1.0", - "@eslint/js": "9.14.0", - "@eslint/plugin-kit": "^0.2.0", + "@eslint/config-array": "^0.19.0", + "@eslint/core": "^0.9.0", + "@eslint/eslintrc": "^3.2.0", + "@eslint/js": "9.15.0", + "@eslint/plugin-kit": "^0.2.3", "@humanfs/node": "^0.16.6", "@humanwhocodes/module-importer": "^1.0.1", - "@humanwhocodes/retry": "^0.4.0", + "@humanwhocodes/retry": "^0.4.1", "@types/estree": "^1.0.6", "@types/json-schema": "^7.0.15", "ajv": "^6.12.4", "chalk": "^4.0.0", - "cross-spawn": "^7.0.2", + "cross-spawn": "^7.0.5", "debug": "^4.3.2", "escape-string-regexp": "^4.0.0", "eslint-scope": "^8.2.0", @@ -3482,8 +3690,7 @@ "lodash.merge": "^4.6.2", "minimatch": "^3.1.2", "natural-compare": "^1.4.0", - "optionator": "^0.9.3", - "text-table": "^0.2.0" + "optionator": "^0.9.3" }, "bin": { "eslint": "bin/eslint.js" @@ -3508,6 +3715,7 @@ "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-9.1.0.tgz", "integrity": "sha512-NSWl5BFQWEPi1j4TjVNItzYV7dZXZ+wP6I6ZhrBGpChQhZRUaElihE9uRRkcbRnNb76UMKDF3r+WTmNcGPKsqw==", "dev": true, + "license": "MIT", "bin": { "eslint-config-prettier": "bin/cli.js" }, @@ -3534,6 +3742,7 @@ "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-5.2.1.tgz", "integrity": "sha512-gH3iR3g4JfF+yYPaJYkN7jEl9QbweL/YfkoRlNnuIEHEz1vHVlCmWOS+eGGiRuzHQXdJFCOTxRgvju9b8VUmrw==", "dev": true, + "license": "MIT", "dependencies": { "prettier-linter-helpers": "^1.0.0", "synckit": "^0.9.1" @@ -3564,6 +3773,7 @@ "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.37.2.tgz", "integrity": "sha512-EsTAnj9fLVr/GZleBLFbj/sSuXeWmp1eXIN60ceYnZveqEaUCyW4X+Vh4WTdUhCkW4xutXYqTXCUSyqD4rB75w==", "dev": true, + "license": "MIT", "dependencies": { "array-includes": "^3.1.8", "array.prototype.findlast": "^1.2.5", @@ -3596,6 +3806,7 @@ "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-5.0.0.tgz", "integrity": "sha512-hIOwI+5hYGpJEc4uPRmz2ulCjAGD/N13Lukkh8cLV0i2IRk/bdZDYjgLVHj+U9Z704kLIdIO6iueGvxNur0sgw==", "dev": true, + "license": "MIT", "engines": { "node": ">=10" }, @@ -3608,6 +3819,7 @@ "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" @@ -3618,6 +3830,7 @@ "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" }, @@ -3625,20 +3838,12 @@ "node": "*" } }, - "node_modules/eslint-plugin-react/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - } - }, "node_modules/eslint-scope": { "version": "8.2.0", "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-8.2.0.tgz", "integrity": "sha512-PHlWUfG6lvPc3yvP5A4PNyBL1W8fkDUccmI21JUu/+GKZBoH/W5u6usENXUrWFRsyoW5ACUjFGgAFQp5gUlb/A==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { "esrecurse": "^4.3.0", "estraverse": "^5.2.0" @@ -3651,59 +3856,35 @@ } }, "node_modules/eslint-visitor-keys": { - "version": "3.4.3", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", - "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "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==", "dev": true, + "license": "Apache-2.0", "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { "url": "https://opencollective.com/eslint" } }, - "node_modules/eslint/node_modules/@eslint/js": { - "version": "9.14.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.14.0.tgz", - "integrity": "sha512-pFoEtFWCPyDOl+C6Ift+wC7Ro89otjigCf5vcuWqWgqNSQbRrpjSvdeE6ofLz4dHmyxD5f7gIdGT4+p36L6Twg==", - "dev": true, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - } - }, - "node_modules/eslint/node_modules/@types/estree": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.6.tgz", - "integrity": "sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==", - "dev": true - }, "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/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==", - "dev": true, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, "node_modules/eslint/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" }, @@ -3716,6 +3897,7 @@ "resolved": "https://registry.npmjs.org/espree/-/espree-10.3.0.tgz", "integrity": "sha512-0QYC8b24HWY8zjRnDTL6RiHfDbAWn63qb4LMj1Z4b076A4une81+z03Kg7l7mn/48PUTqoLptSXez8oknU8Clg==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { "acorn": "^8.14.0", "acorn-jsx": "^5.3.2", @@ -3728,23 +3910,12 @@ "url": "https://opencollective.com/eslint" } }, - "node_modules/espree/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==", - "dev": true, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, "node_modules/esquery": { "version": "1.6.0", "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.6.0.tgz", "integrity": "sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==", "dev": true, + "license": "BSD-3-Clause", "dependencies": { "estraverse": "^5.1.0" }, @@ -3757,6 +3928,7 @@ "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { "estraverse": "^5.2.0" }, @@ -3769,6 +3941,7 @@ "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", "dev": true, + "license": "BSD-2-Clause", "engines": { "node": ">=4.0" } @@ -3788,6 +3961,7 @@ "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", "dev": true, + "license": "BSD-2-Clause", "engines": { "node": ">=0.10.0" } @@ -3802,19 +3976,22 @@ "version": "3.1.3", "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/fast-diff": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.3.0.tgz", "integrity": "sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==", - "dev": true + "dev": true, + "license": "Apache-2.0" }, "node_modules/fast-glob": { "version": "3.3.2", "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz", "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==", "dev": true, + "license": "MIT", "dependencies": { "@nodelib/fs.stat": "^2.0.2", "@nodelib/fs.walk": "^1.2.3", @@ -3831,6 +4008,7 @@ "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", "dev": true, + "license": "ISC", "dependencies": { "is-glob": "^4.0.1" }, @@ -3842,19 +4020,22 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/fast-levenshtein": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/fastq": { "version": "1.17.1", "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.17.1.tgz", "integrity": "sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==", "dev": true, + "license": "ISC", "dependencies": { "reusify": "^1.0.4" } @@ -3864,6 +4045,7 @@ "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-8.0.0.tgz", "integrity": "sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==", "dev": true, + "license": "MIT", "dependencies": { "flat-cache": "^4.0.0" }, @@ -3876,6 +4058,7 @@ "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", "dev": true, + "license": "MIT", "dependencies": { "to-regex-range": "^5.0.1" }, @@ -3888,6 +4071,7 @@ "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", "dev": true, + "license": "MIT", "dependencies": { "locate-path": "^6.0.0", "path-exists": "^4.0.0" @@ -3904,6 +4088,7 @@ "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-4.0.1.tgz", "integrity": "sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==", "dev": true, + "license": "MIT", "dependencies": { "flatted": "^3.2.9", "keyv": "^4.5.4" @@ -3913,16 +4098,18 @@ } }, "node_modules/flatted": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.1.tgz", - "integrity": "sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==", - "dev": true + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.2.tgz", + "integrity": "sha512-AiwGJM8YcNOaobumgtng+6NHuOqC3A7MixFeDafM3X9cIUM+xUXoS5Vfgf+OihAYe20fxqNM9yPBXJzRtZ/4eA==", + "dev": true, + "license": "ISC" }, "node_modules/for-each": { "version": "0.3.3", "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", "dev": true, + "license": "MIT", "dependencies": { "is-callable": "^1.1.3" } @@ -3956,7 +4143,8 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/fsevents": { "version": "2.3.3", @@ -3964,6 +4152,7 @@ "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", "dev": true, "hasInstallScript": true, + "license": "MIT", "optional": true, "os": [ "darwin" @@ -3977,6 +4166,7 @@ "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", "dev": true, + "license": "MIT", "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -3986,6 +4176,7 @@ "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.6.tgz", "integrity": "sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.2", "define-properties": "^1.2.0", @@ -4004,6 +4195,7 @@ "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", "dev": true, + "license": "MIT", "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -4013,6 +4205,7 @@ "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", "dev": true, + "license": "MIT", "engines": { "node": ">=6.9.0" } @@ -4022,6 +4215,7 @@ "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz", "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==", "dev": true, + "license": "MIT", "dependencies": { "es-errors": "^1.3.0", "function-bind": "^1.1.2", @@ -4041,6 +4235,7 @@ "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.2.tgz", "integrity": "sha512-g0QYk1dZBxGwk+Ngc+ltRH2IBp2f7zBkBMBJZCDerh6EhlhSR6+9irMCuT/09zD6qkarHUSn529sK/yL4S27mg==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.5", "es-errors": "^1.3.0", @@ -4054,21 +4249,19 @@ } }, "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": "9.3.5", + "resolved": "https://registry.npmjs.org/glob/-/glob-9.3.5.tgz", + "integrity": "sha512-e1LleDykUz2Iu+MTYdkSsuWX8lvAjAcs0Xef0lNIu0S2wOAzuTxCJtcd9S3cijlwYF18EsU3rzb8jPVobxDh9Q==", "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" + "minimatch": "^8.0.2", + "minipass": "^4.2.4", + "path-scurry": "^1.6.1" }, "engines": { - "node": "*" + "node": ">=16 || 14 >=14.17" }, "funding": { "url": "https://github.com/sponsors/isaacs" @@ -4079,6 +4272,7 @@ "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", "dev": true, + "license": "ISC", "dependencies": { "is-glob": "^4.0.3" }, @@ -4086,32 +4280,27 @@ "node": ">=10.13.0" } }, - "node_modules/glob/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, - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, "node_modules/glob/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": "8.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-8.0.4.tgz", + "integrity": "sha512-W0Wvr9HyFXZRGIDgCicunpQ299OKXs9RgZfaukz4qAW/pJhcpUfupc9c+OObPOFueNy8VSrZgEmDtk6Kh4WzDA==", "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/globals": { "version": "15.12.0", "resolved": "https://registry.npmjs.org/globals/-/globals-15.12.0.tgz", "integrity": "sha512-1+gLErljJFhbOVyaetcwJiJ4+eLe45S2E7P5UiZ9xGfeq3ATQf5DOv9G7MH3gGbKQLkzmNh2DxfZwLdw+j6oTQ==", + "license": "MIT", "engines": { "node": ">=18" }, @@ -4124,6 +4313,7 @@ "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.4.tgz", "integrity": "sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==", "dev": true, + "license": "MIT", "dependencies": { "define-properties": "^1.2.1", "gopd": "^1.0.1" @@ -4140,6 +4330,7 @@ "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", "dev": true, + "license": "MIT", "dependencies": { "array-union": "^2.1.0", "dir-glob": "^3.0.1", @@ -4158,13 +4349,15 @@ "node_modules/globrex": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/globrex/-/globrex-0.1.2.tgz", - "integrity": "sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg==" + "integrity": "sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg==", + "license": "MIT" }, "node_modules/gopd": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", "dev": true, + "license": "MIT", "dependencies": { "get-intrinsic": "^1.1.3" }, @@ -4176,13 +4369,15 @@ "version": "1.4.0", "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/has-ansi": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", "integrity": "sha512-C8vBJ8DwUCx19vhm7urhTuUsr4/IyP6l4VzNQDv+ryHQObW3TTTp9yB68WpYgRe2bbaGuZ/se74IqFeVnMnLZg==", "dev": true, + "license": "MIT", "dependencies": { "ansi-regex": "^2.0.0" }, @@ -4190,20 +4385,12 @@ "node": ">=0.10.0" } }, - "node_modules/has-ansi/node_modules/ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/has-bigints": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==", "dev": true, + "license": "MIT", "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -4213,6 +4400,7 @@ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } @@ -4222,6 +4410,7 @@ "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", "dev": true, + "license": "MIT", "dependencies": { "es-define-property": "^1.0.0" }, @@ -4234,6 +4423,7 @@ "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.3.tgz", "integrity": "sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.4" }, @@ -4246,6 +4436,7 @@ "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.4" }, @@ -4258,6 +4449,7 @@ "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", "dev": true, + "license": "MIT", "dependencies": { "has-symbols": "^1.0.3" }, @@ -4273,6 +4465,7 @@ "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", "dev": true, + "license": "MIT", "dependencies": { "function-bind": "^1.1.2" }, @@ -4324,19 +4517,16 @@ "version": "3.3.2", "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz", "integrity": "sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==", + "license": "BSD-3-Clause", "dependencies": { "react-is": "^16.7.0" } }, - "node_modules/hoist-non-react-statics/node_modules/react-is": { - "version": "16.13.1", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", - "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" - }, "node_modules/html-parse-stringify": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/html-parse-stringify/-/html-parse-stringify-3.0.1.tgz", "integrity": "sha512-KknJ50kTInJ7qIScF3jeaFRpMpE8/lfiTdzf/twXyPBLAGrLRTmkz3AdTnKeh40X8k9L2fdYwEp/42WGXIRGcg==", + "license": "MIT", "dependencies": { "void-elements": "3.1.0" } @@ -4356,6 +4546,7 @@ "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" @@ -4391,6 +4582,7 @@ "version": "8.0.0", "resolved": "https://registry.npmjs.org/i18next-browser-languagedetector/-/i18next-browser-languagedetector-8.0.0.tgz", "integrity": "sha512-zhXdJXTTCoG39QsrOCiOabnWj2jecouOqbchu3EfhtSHxIB5Uugnm9JaizenOy39h7ne3+fLikIjeW88+rgszw==", + "license": "MIT", "dependencies": { "@babel/runtime": "^7.23.2" } @@ -4409,6 +4601,7 @@ "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", "dev": true, + "license": "MIT", "engines": { "node": ">= 4" } @@ -4418,6 +4611,7 @@ "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", "dev": true, + "license": "MIT", "dependencies": { "parent-module": "^1.0.0", "resolve-from": "^4.0.0" @@ -4434,6 +4628,7 @@ "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.8.19" } @@ -4443,6 +4638,7 @@ "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } @@ -4453,6 +4649,7 @@ "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", "deprecated": "This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.", "dev": true, + "license": "ISC", "dependencies": { "once": "^1.3.0", "wrappy": "1" @@ -4462,7 +4659,8 @@ "version": "2.0.4", "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/inline-style-parser": { "version": "0.2.4", @@ -4475,6 +4673,7 @@ "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.7.tgz", "integrity": "sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g==", "dev": true, + "license": "MIT", "dependencies": { "es-errors": "^1.3.0", "hasown": "^2.0.0", @@ -4513,6 +4712,7 @@ "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.4.tgz", "integrity": "sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.2", "get-intrinsic": "^1.2.1" @@ -4529,6 +4729,7 @@ "resolved": "https://registry.npmjs.org/is-async-function/-/is-async-function-2.0.0.tgz", "integrity": "sha512-Y1JXKrfykRJGdlDwdKlLpLyMIiWqWvuSd17TvZk68PLAOGOoF4Xyav1z0Xhoi+gCYjZVeC5SI+hYFOfvXmGRCA==", "dev": true, + "license": "MIT", "dependencies": { "has-tostringtag": "^1.0.0" }, @@ -4544,6 +4745,7 @@ "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", "dev": true, + "license": "MIT", "dependencies": { "has-bigints": "^1.0.1" }, @@ -4556,6 +4758,7 @@ "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", "dev": true, + "license": "MIT", "dependencies": { "binary-extensions": "^2.0.0" }, @@ -4568,6 +4771,7 @@ "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.2", "has-tostringtag": "^1.0.0" @@ -4584,6 +4788,7 @@ "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.4" }, @@ -4596,6 +4801,7 @@ "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.15.1.tgz", "integrity": "sha512-z0vtXSwucUJtANQWldhbtbt7BnL0vxiFjIdDLAatwhDYty2bad6s+rijD6Ri4YuYJubLzIJLUidCh09e1djEVQ==", "dev": true, + "license": "MIT", "dependencies": { "hasown": "^2.0.2" }, @@ -4611,6 +4817,7 @@ "resolved": "https://registry.npmjs.org/is-data-view/-/is-data-view-1.0.1.tgz", "integrity": "sha512-AHkaJrsUVW6wq6JS8y3JnM/GJF/9cf+k20+iDzlSaJrinEo5+7vRiteOSwBhHRiAyQATN1AmY4hwzxJKPmYf+w==", "dev": true, + "license": "MIT", "dependencies": { "is-typed-array": "^1.1.13" }, @@ -4626,6 +4833,7 @@ "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", "dev": true, + "license": "MIT", "dependencies": { "has-tostringtag": "^1.0.0" }, @@ -4651,17 +4859,22 @@ "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/is-finalizationregistry": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-finalizationregistry/-/is-finalizationregistry-1.0.2.tgz", - "integrity": "sha512-0by5vtUJs8iFQb5TYUHHPudOR+qXYIMKtiUzvLIZITZUjknFmziyBJuLhVRc+Ds0dREFlskDNJKYIdIzu/9pfw==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-finalizationregistry/-/is-finalizationregistry-1.1.0.tgz", + "integrity": "sha512-qfMdqbAQEwBw78ZyReKnlA8ezmPdb9BemzIIip/JkjaZUhitfXDkkr+3QTboW0JrSXT1QWyYShpvnNHGZ4c4yA==", "dev": true, + "license": "MIT", "dependencies": { - "call-bind": "^1.0.2" + "call-bind": "^1.0.7" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -4672,6 +4885,7 @@ "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.10.tgz", "integrity": "sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==", "dev": true, + "license": "MIT", "dependencies": { "has-tostringtag": "^1.0.0" }, @@ -4687,6 +4901,7 @@ "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", "dev": true, + "license": "MIT", "dependencies": { "is-extglob": "^2.1.1" }, @@ -4709,6 +4924,7 @@ "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.3.tgz", "integrity": "sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.4" }, @@ -4721,6 +4937,7 @@ "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.3.tgz", "integrity": "sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.4" }, @@ -4733,6 +4950,7 @@ "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.12.0" } @@ -4742,6 +4960,7 @@ "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz", "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==", "dev": true, + "license": "MIT", "dependencies": { "has-tostringtag": "^1.0.0" }, @@ -4757,6 +4976,7 @@ "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } @@ -4778,6 +4998,7 @@ "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.2", "has-tostringtag": "^1.0.0" @@ -4794,6 +5015,7 @@ "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.3.tgz", "integrity": "sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.4" }, @@ -4806,6 +5028,7 @@ "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.3.tgz", "integrity": "sha512-nA2hv5XIhLR3uVzDDfCIknerhx8XUKnstuOERPNNIinXG7v9u+ohXF67vxm4TPTEPU6lm61ZkwP3c9PCB97rhg==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.7" }, @@ -4821,6 +5044,7 @@ "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", "dev": true, + "license": "MIT", "dependencies": { "has-tostringtag": "^1.0.0" }, @@ -4836,6 +5060,7 @@ "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", "dev": true, + "license": "MIT", "dependencies": { "has-symbols": "^1.0.2" }, @@ -4851,6 +5076,7 @@ "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.13.tgz", "integrity": "sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw==", "dev": true, + "license": "MIT", "dependencies": { "which-typed-array": "^1.1.14" }, @@ -4866,6 +5092,7 @@ "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.2.tgz", "integrity": "sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.4" }, @@ -4878,6 +5105,7 @@ "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.2" }, @@ -4890,6 +5118,7 @@ "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.3.tgz", "integrity": "sha512-LvIm3/KWzS9oRFHugab7d+M/GcBXuXX5xZkzPmN+NxihdQlZUQ4dWuSV1xR/sq6upL1TJEDrfBgRepHFdBtSNQ==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.7", "get-intrinsic": "^1.2.4" @@ -4905,19 +5134,22 @@ "version": "2.0.5", "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/isexe": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/iterator.prototype": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/iterator.prototype/-/iterator.prototype-1.1.3.tgz", "integrity": "sha512-FW5iMbeQ6rBGm/oKgzq2aW4KvAGpxPzYES8N4g4xNXUKpL1mclMvOe+76AcLDTvD+Ze+sOpVhgdAQEKF4L9iGQ==", "dev": true, + "license": "MIT", "dependencies": { "define-properties": "^1.2.1", "get-intrinsic": "^1.2.1", @@ -4932,13 +5164,15 @@ "node_modules/js-tokens": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "license": "MIT" }, "node_modules/js-yaml": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", "dev": true, + "license": "MIT", "dependencies": { "argparse": "^2.0.1" }, @@ -4963,25 +5197,29 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/json-schema-traverse": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/json-stable-stringify-without-jsonify": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/json5": { "version": "2.2.3", "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", "dev": true, + "license": "MIT", "bin": { "json5": "lib/cli.js" }, @@ -4994,6 +5232,7 @@ "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.3.5.tgz", "integrity": "sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ==", "dev": true, + "license": "MIT", "dependencies": { "array-includes": "^3.1.6", "array.prototype.flat": "^1.3.1", @@ -5009,6 +5248,7 @@ "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", "dev": true, + "license": "MIT", "dependencies": { "json-buffer": "3.0.1" } @@ -5018,6 +5258,7 @@ "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", "dev": true, + "license": "MIT", "dependencies": { "prelude-ls": "^1.2.1", "type-check": "~0.4.0" @@ -5037,9 +5278,10 @@ } }, "node_modules/linkifyjs": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/linkifyjs/-/linkifyjs-4.1.3.tgz", - "integrity": "sha512-auMesunaJ8yfkHvK4gfg1K0SaKX/6Wn9g2Aac/NwX+l5VdmFZzo/hdPGxEOETj+ryRa4/fiOPjeeKURSAJx1sg==", + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/linkifyjs/-/linkifyjs-4.1.4.tgz", + "integrity": "sha512-0/NxkHNpiJ0k9VrYCkAn9OtU1eu8xEr1tCCpDtSsVRm/SF0xAak2Gzv3QimSfgUgqLBCDlfhMbu73XvaEHUTPQ==", + "license": "MIT", "peer": true }, "node_modules/locate-path": { @@ -5047,6 +5289,7 @@ "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", "dev": true, + "license": "MIT", "dependencies": { "p-locate": "^5.0.0" }, @@ -5061,19 +5304,22 @@ "version": "4.17.21", "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", - "dev": true + "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", "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/loglevel": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/loglevel/-/loglevel-1.9.1.tgz", - "integrity": "sha512-hP3I3kCrDIMuRwAwHltphhDM1r8i55H33GgqjXbrisuJhF4kRhW1dNuxsRklp4bXl8DSdLaNLuiL4A/LWRfxvg==", + "version": "1.9.2", + "resolved": "https://registry.npmjs.org/loglevel/-/loglevel-1.9.2.tgz", + "integrity": "sha512-HgMmCqIJSAKqo68l0rS2AanEWfkxaZ5wNiEFb5ggm08lDs9Xl2KxBlX3PTcaD2chBM1gXAYf491/M2Rv8Jwayg==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.6.0" }, @@ -5087,25 +5333,18 @@ "resolved": "https://registry.npmjs.org/loglevel-colored-level-prefix/-/loglevel-colored-level-prefix-1.0.0.tgz", "integrity": "sha512-u45Wcxxc+SdAlh4yeF/uKlC1SPUPCy0gullSNKXod5I4bmifzk+Q4lSLExNEVn19tGaJipbZ4V4jbFn79/6mVA==", "dev": true, + "license": "MIT", "dependencies": { "chalk": "^1.1.3", "loglevel": "^1.4.1" } }, - "node_modules/loglevel-colored-level-prefix/node_modules/ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/loglevel-colored-level-prefix/node_modules/ansi-styles": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", "integrity": "sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -5115,6 +5354,7 @@ "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", "integrity": "sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==", "dev": true, + "license": "MIT", "dependencies": { "ansi-styles": "^2.2.1", "escape-string-regexp": "^1.0.2", @@ -5131,27 +5371,17 @@ "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/loglevel-colored-level-prefix/node_modules/strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==", - "dev": true, - "dependencies": { - "ansi-regex": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/loglevel-colored-level-prefix/node_modules/supports-color": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", "integrity": "sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.8.0" } @@ -5170,6 +5400,7 @@ "version": "1.4.0", "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", + "license": "MIT", "dependencies": { "js-tokens": "^3.0.0 || ^4.0.0" }, @@ -5192,6 +5423,7 @@ "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.8.tgz", "integrity": "sha512-ISQTe55T2ao7XtlAStud6qwYPZjE4GK1S/BeVPus4jrq6JuOnQ00YKQC581RWhR122W7msZV263KzVeLoqidyQ==", "dev": true, + "license": "MIT", "dependencies": { "@jridgewell/sourcemap-codec": "^1.4.15" }, @@ -5357,6 +5589,7 @@ "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", "dev": true, + "license": "MIT", "engines": { "node": ">= 8" } @@ -5808,6 +6041,7 @@ "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", "dev": true, + "license": "MIT", "dependencies": { "braces": "^3.0.3", "picomatch": "^2.3.1" @@ -5837,25 +6071,28 @@ "resolved": "https://registry.npmjs.org/minipass/-/minipass-4.2.8.tgz", "integrity": "sha512-fNzuVyifolSLFL4NzpF+wEF4qrgqaaKX0haXPQEdQ7NKAN+WecoKMHV09YcuL/DHxrUsYQOK3MiuDf7Ip2OXfQ==", "dev": true, + "license": "ISC", "engines": { "node": ">=8" } }, "node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "license": "MIT" }, "node_modules/nanoid": { - "version": "3.3.7", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz", - "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==", + "version": "3.3.8", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.8.tgz", + "integrity": "sha512-WNLf5Sd8oZxOm+TzppcYk8gVOgP+l58xNy58D0nbUnOxOWRWvlcCV4kUF7ltmI6PsrLl/BgKEyS4mqsGChFN0w==", "funding": [ { "type": "github", "url": "https://github.com/sponsors/ai" } ], + "license": "MIT", "bin": { "nanoid": "bin/nanoid.cjs" }, @@ -5867,12 +6104,14 @@ "version": "1.4.0", "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/node-fetch": { "version": "2.7.0", "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==", + "license": "MIT", "dependencies": { "whatwg-url": "^5.0.0" }, @@ -5900,6 +6139,7 @@ "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -5909,15 +6149,17 @@ "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/object-inspect": { - "version": "1.13.2", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.2.tgz", - "integrity": "sha512-IRZSRuzJiynemAXPYtPe5BoI/RESNYR7TYm50MC5Mqbd3Jmw5y790sErYw3V6SryFJD64b74qQQs9wn5Bg/k3g==", + "version": "1.13.3", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.3.tgz", + "integrity": "sha512-kDCGIbxkDSXE3euJZZXzc6to7fCrKHNI/hSRQnRuQ+BWjFNzZwiFF8fj/6o2t2G9/jTj8PSIYTfCLelLZEeRpA==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.4" }, @@ -5930,6 +6172,7 @@ "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.4" } @@ -5939,6 +6182,7 @@ "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.5.tgz", "integrity": "sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.5", "define-properties": "^1.2.1", @@ -5957,6 +6201,7 @@ "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.8.tgz", "integrity": "sha512-cmopxi8VwRIAw/fkijJohSfpef5PdN0pMQJN6VC/ZKvn0LIknWD8KtgY6KlQdEc4tIjcQ3HxSMmnvtzIscdaYQ==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.7", "define-properties": "^1.2.1", @@ -5971,6 +6216,7 @@ "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.8.tgz", "integrity": "sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.7", "define-properties": "^1.2.1", @@ -5989,6 +6235,7 @@ "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.2.0.tgz", "integrity": "sha512-yBYjY9QX2hnRmZHAjG/f13MzmBzxzYgQhFrke06TTyKY5zSTEqkOeukBzIdVA3j3ulu8Qa3MbVFShV7T2RmGtQ==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.7", "define-properties": "^1.2.1", @@ -6006,6 +6253,7 @@ "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", "dev": true, + "license": "ISC", "dependencies": { "wrappy": "1" } @@ -6015,6 +6263,7 @@ "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz", "integrity": "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==", "dev": true, + "license": "MIT", "dependencies": { "deep-is": "^0.1.3", "fast-levenshtein": "^2.0.6", @@ -6032,6 +6281,7 @@ "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", "dev": true, + "license": "MIT", "dependencies": { "yocto-queue": "^0.1.0" }, @@ -6047,6 +6297,7 @@ "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", "dev": true, + "license": "MIT", "dependencies": { "p-limit": "^3.0.2" }, @@ -6062,6 +6313,7 @@ "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", "dev": true, + "license": "MIT", "dependencies": { "callsites": "^3.0.0" }, @@ -6100,6 +6352,7 @@ "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } @@ -6109,6 +6362,7 @@ "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -6118,6 +6372,7 @@ "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } @@ -6126,13 +6381,15 @@ "version": "1.0.7", "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", - "dev": true + "dev": true, + "license": "MIT" }, "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" @@ -6148,13 +6405,15 @@ "version": "10.4.3", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/path-scurry/node_modules/minipass": { "version": "7.1.2", "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", "dev": true, + "license": "ISC", "engines": { "node": ">=16 || 14 >=14.17" } @@ -6164,20 +6423,23 @@ "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/picocolors": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.0.tgz", - "integrity": "sha512-TQ92mBOW0l3LeMeyLV6mzy/kWr8lkd/hp3mTg7wYK7zJhuBStmGMBG0BdeDZS/dZx1IukaX6Bk11zcln25o1Aw==" + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", + "license": "ISC" }, "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" }, @@ -6190,6 +6452,7 @@ "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.0.0.tgz", "integrity": "sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.4" } @@ -6212,6 +6475,7 @@ "url": "https://github.com/sponsors/ai" } ], + "license": "MIT", "dependencies": { "nanoid": "^3.3.7", "picocolors": "^1.0.0", @@ -6224,13 +6488,15 @@ "node_modules/postcss-value-parser": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", - "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==" + "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==", + "license": "MIT" }, "node_modules/prelude-ls": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.8.0" } @@ -6240,6 +6506,7 @@ "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.3.3.tgz", "integrity": "sha512-i2tDNA0O5IrMO757lfrdQZCc2jPNDVntV0m/+4whiDfWaTKfMNgR7Qz0NAeGz/nRqF4m5/6CLzbP4/liHt12Ew==", "dev": true, + "license": "MIT", "bin": { "prettier": "bin/prettier.cjs" }, @@ -6255,6 +6522,7 @@ "resolved": "https://registry.npmjs.org/prettier-eslint/-/prettier-eslint-16.3.0.tgz", "integrity": "sha512-Lh102TIFCr11PJKUMQ2kwNmxGhTsv/KzUg9QYF2Gkw259g/kPgndZDWavk7/ycbRvj2oz4BPZ1gCU8bhfZH/Xg==", "dev": true, + "license": "MIT", "dependencies": { "@typescript-eslint/parser": "^6.7.5", "common-tags": "^1.4.0", @@ -6290,6 +6558,7 @@ "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.4.tgz", "integrity": "sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==", "dev": true, + "license": "MIT", "dependencies": { "ajv": "^6.12.4", "debug": "^4.3.2", @@ -6313,6 +6582,7 @@ "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" @@ -6323,6 +6593,7 @@ "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" }, @@ -6335,6 +6606,7 @@ "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.57.1.tgz", "integrity": "sha512-d9zaMRSTIKDLhctzH12MtXvJKSSUhaHcjV+2Z+GK+EEY7XKpP5yR4x+N3TAcHTcu963nIr+TMcCb4DBCYX1z6Q==", "dev": true, + "license": "MIT", "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" } @@ -6344,6 +6616,7 @@ "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-6.21.0.tgz", "integrity": "sha512-tbsV1jPne5CkFQCgPBcDOt30ItF7aJoZL997JSF7MhGQqOeT3svWRYxiqlfA5RUdlHN6Fi+EI9bxqbdyAUZjYQ==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { "@typescript-eslint/scope-manager": "6.21.0", "@typescript-eslint/types": "6.21.0", @@ -6372,6 +6645,7 @@ "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-6.21.0.tgz", "integrity": "sha512-OwLUIWZJry80O99zvqXVEioyniJMa+d2GrqpUTqi5/v5D5rOrppJVBPa0yKCblcigC0/aYAzxxqQ1B+DS2RYsg==", "dev": true, + "license": "MIT", "dependencies": { "@typescript-eslint/types": "6.21.0", "@typescript-eslint/visitor-keys": "6.21.0" @@ -6389,6 +6663,7 @@ "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-6.21.0.tgz", "integrity": "sha512-1kFmZ1rOm5epu9NZEZm1kckCDGj5UJEf7P1kliH4LKu/RkwpsfqqGmY2OOcUs18lSlQBKLDYBOGxRVtrMN5lpg==", "dev": true, + "license": "MIT", "engines": { "node": "^16.0.0 || >=18.0.0" }, @@ -6402,6 +6677,7 @@ "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-6.21.0.tgz", "integrity": "sha512-6npJTkZcO+y2/kr+z0hc4HwNfrrP4kNYh57ek7yCNlrBjWQ1Y0OS7jiZTkgumrvkX5HkEKXFZkkdFNkaW2wmUQ==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { "@typescript-eslint/types": "6.21.0", "@typescript-eslint/visitor-keys": "6.21.0", @@ -6430,6 +6706,7 @@ "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-6.21.0.tgz", "integrity": "sha512-JJtkDduxLi9bivAB+cYOVMtbkqdPOhZ+ZI5LC47MIRrDV4Yn2o+ZnW10Nkmr28xRpSpdJ6Sm42Hjf2+REYXm0A==", "dev": true, + "license": "MIT", "dependencies": { "@typescript-eslint/types": "6.21.0", "eslint-visitor-keys": "^3.4.1" @@ -6442,11 +6719,22 @@ "url": "https://opencollective.com/typescript-eslint" } }, + "node_modules/prettier-eslint/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/prettier-eslint/node_modules/doctrine": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", "dev": true, + "license": "Apache-2.0", "dependencies": { "esutils": "^2.0.2" }, @@ -6458,7 +6746,9 @@ "version": "8.57.1", "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.57.1.tgz", "integrity": "sha512-ypowyDxpVSYpkXr9WPv2PAZCtNip1Mv5KTW0SCurXv/9iOpcrH9PaqUElksqEB6pChqHGDRCFTyrZlGhnLNGiA==", + "deprecated": "This version is no longer supported. Please see https://eslint.org/version-support for other options.", "dev": true, + "license": "MIT", "dependencies": { "@eslint-community/eslint-utils": "^4.2.0", "@eslint-community/regexpp": "^4.6.1", @@ -6514,6 +6804,7 @@ "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { "esrecurse": "^4.3.0", "estraverse": "^5.2.0" @@ -6525,11 +6816,25 @@ "url": "https://opencollective.com/eslint" } }, + "node_modules/prettier-eslint/node_modules/eslint-visitor-keys": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, "node_modules/prettier-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" @@ -6540,6 +6845,7 @@ "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" }, @@ -6552,6 +6858,7 @@ "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { "acorn": "^8.9.0", "acorn-jsx": "^5.3.2", @@ -6569,6 +6876,7 @@ "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", "dev": true, + "license": "MIT", "dependencies": { "flat-cache": "^3.0.4" }, @@ -6581,6 +6889,7 @@ "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.2.0.tgz", "integrity": "sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==", "dev": true, + "license": "MIT", "dependencies": { "flatted": "^3.2.9", "keyv": "^4.5.3", @@ -6595,6 +6904,7 @@ "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", "dev": true, + "license": "MIT", "dependencies": { "type-fest": "^0.20.2" }, @@ -6610,6 +6920,7 @@ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", "dev": true, + "license": "ISC", "dependencies": { "brace-expansion": "^2.0.1" }, @@ -6620,11 +6931,38 @@ "url": "https://github.com/sponsors/isaacs" } }, + "node_modules/prettier-eslint/node_modules/semver": { + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", + "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/prettier-eslint/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/prettier-linter-helpers": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz", "integrity": "sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==", "dev": true, + "license": "MIT", "dependencies": { "fast-diff": "^1.1.2" }, @@ -6637,6 +6975,7 @@ "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", "dev": true, + "license": "MIT", "dependencies": { "@jest/schemas": "^29.6.3", "ansi-styles": "^5.0.0", @@ -6651,6 +6990,7 @@ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", "dev": true, + "license": "MIT", "engines": { "node": ">=10" }, @@ -6658,11 +6998,19 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, + "node_modules/pretty-format/node_modules/react-is": { + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", + "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", + "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" } @@ -6672,6 +7020,7 @@ "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==", "dev": true, + "license": "MIT", "dependencies": { "loose-envify": "^1.4.0", "object-assign": "^4.1.1", @@ -6698,13 +7047,15 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/punycode": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", "dev": true, + "license": "MIT", "engines": { "node": ">=6" } @@ -6713,7 +7064,8 @@ "version": "0.0.0", "resolved": "https://registry.npmjs.org/qr.js/-/qr.js-0.0.0.tgz", "integrity": "sha512-c4iYnWb+k2E+vYpRimHqSu575b1/wKl4XFeJGpFmrJQz5I88v9aY2czh7s0w36srfCM1sXgC/xpoJz5dJfq+OQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/queue-microtask": { "version": "1.2.3", @@ -6733,12 +7085,14 @@ "type": "consulting", "url": "https://feross.org/support" } - ] + ], + "license": "MIT" }, "node_modules/react": { "version": "18.3.1", "resolved": "https://registry.npmjs.org/react/-/react-18.3.1.tgz", "integrity": "sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==", + "license": "MIT", "dependencies": { "loose-envify": "^1.1.0" }, @@ -6750,6 +7104,7 @@ "version": "18.3.1", "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.3.1.tgz", "integrity": "sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==", + "license": "MIT", "dependencies": { "loose-envify": "^1.1.0", "scheduler": "^0.23.2" @@ -6762,6 +7117,7 @@ "version": "7.53.2", "resolved": "https://registry.npmjs.org/react-hook-form/-/react-hook-form-7.53.2.tgz", "integrity": "sha512-YVel6fW5sOeedd1524pltpHX+jgU2u3DSDtXEaBORNdqiNrsX/nUI/iGXONegttg0mJVnfrIkiV0cmTU6Oo2xw==", + "license": "MIT", "engines": { "node": ">=18.0.0" }, @@ -6799,15 +7155,16 @@ "version": "5.3.0", "resolved": "https://registry.npmjs.org/react-icons/-/react-icons-5.3.0.tgz", "integrity": "sha512-DnUk8aFbTyQPSkCfF8dbX6kQjXA9DktMeJqfjrg6cK9vwQVMxmcA3BfP4QoiztVmEHtwlTgLFsPuH2NskKT6eg==", + "license": "MIT", "peerDependencies": { "react": "*" } }, "node_modules/react-is": { - "version": "18.3.1", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", - "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", - "dev": true + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", + "license": "MIT" }, "node_modules/react-markdown": { "version": "9.0.1", @@ -6840,6 +7197,7 @@ "resolved": "https://registry.npmjs.org/react-qr-code/-/react-qr-code-2.0.15.tgz", "integrity": "sha512-MkZcjEXqVKqXEIMVE0mbcGgDpkfSdd8zhuzXEl9QzYeNcw8Hq2oVIzDLWuZN2PQBwM5PWjc2S31K8Q1UbcFMfw==", "dev": true, + "license": "MIT", "dependencies": { "prop-types": "^15.8.1", "qr.js": "0.0.0" @@ -6853,6 +7211,7 @@ "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.14.2.tgz", "integrity": "sha512-jCvmsr+1IUSMUyzOkRcvnVbX3ZYC6g9TDrDbFuFmRDq7PD4yaGbLKNQL6k2jnArV8hjYxh7hVhAZB6s9HDGpZA==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -6862,6 +7221,7 @@ "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", "dev": true, + "license": "MIT", "dependencies": { "picomatch": "^2.2.1" }, @@ -6870,18 +7230,19 @@ } }, "node_modules/reflect.getprototypeof": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/reflect.getprototypeof/-/reflect.getprototypeof-1.0.6.tgz", - "integrity": "sha512-fmfw4XgoDke3kdI6h4xcUz1dG8uaiv5q9gcEwLS4Pnth2kxT+GZ7YehS1JTMGBQmtV7Y4GFGbs2re2NqhdozUg==", + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/reflect.getprototypeof/-/reflect.getprototypeof-1.0.7.tgz", + "integrity": "sha512-bMvFGIUKlc/eSfXNX+aZ+EL95/EgZzuwA0OBPTbZZDEJw/0AkentjMuM1oiRfwHrshqk4RzdgiTg5CcDalXN5g==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.7", "define-properties": "^1.2.1", - "es-abstract": "^1.23.1", + "es-abstract": "^1.23.5", "es-errors": "^1.3.0", "get-intrinsic": "^1.2.4", - "globalthis": "^1.0.3", - "which-builtin-type": "^1.1.3" + "gopd": "^1.0.1", + "which-builtin-type": "^1.1.4" }, "engines": { "node": ">= 0.4" @@ -6893,18 +7254,20 @@ "node_modules/regenerator-runtime": { "version": "0.14.1", "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz", - "integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==" + "integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==", + "license": "MIT" }, "node_modules/regexp.prototype.flags": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.2.tgz", - "integrity": "sha512-NcDiDkTLuPR+++OCKB0nWafEmhg/Da8aUPLPMQbK+bxKKCm1/S5he+AqYa4PlMCVBalb4/yxIRub6qkEx5yJbw==", + "version": "1.5.3", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.3.tgz", + "integrity": "sha512-vqlC04+RQoFalODCbCumG2xIOvapzVMHwsyIGM/SIE8fRhFFsXeH8/QQ+s0T0kDAhKc4k30s73/0ydkHQz6HlQ==", "dev": true, + "license": "MIT", "dependencies": { - "call-bind": "^1.0.6", + "call-bind": "^1.0.7", "define-properties": "^1.2.1", "es-errors": "^1.3.0", - "set-function-name": "^2.0.1" + "set-function-name": "^2.0.2" }, "engines": { "node": ">= 0.4" @@ -6950,13 +7313,15 @@ "version": "0.8.7", "resolved": "https://registry.npmjs.org/require-relative/-/require-relative-0.8.7.tgz", "integrity": "sha512-AKGr4qvHiryxRb19m3PsLRGuKVAbJLUD7E6eOaHkfKhwc+vSgVOCY5xNvm9EkolBKTOf0GrQAZKLimOCz81Khg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/requireindex": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/requireindex/-/requireindex-1.1.0.tgz", "integrity": "sha512-LBnkqsDE7BZKvqylbmn7lTIVdpx4K/QCduRATpO5R+wtPmky/a8pN1bO2D6wXppn1497AJF9mNjqAXr6bdl9jg==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.5" } @@ -6966,6 +7331,7 @@ "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.5.tgz", "integrity": "sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA==", "dev": true, + "license": "MIT", "dependencies": { "is-core-module": "^2.13.0", "path-parse": "^1.0.7", @@ -6983,6 +7349,7 @@ "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", "dev": true, + "license": "MIT", "engines": { "node": ">=4" } @@ -6992,6 +7359,7 @@ "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", "dev": true, + "license": "MIT", "engines": { "iojs": ">=1.0.0", "node": ">=0.10.0" @@ -7003,6 +7371,7 @@ "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", "deprecated": "Rimraf versions prior to v4 are no longer supported", "dev": true, + "license": "ISC", "dependencies": { "glob": "^7.1.3" }, @@ -7013,13 +7382,60 @@ "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", + "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/rimraf/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/rollup": { - "version": "4.22.4", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.22.4.tgz", - "integrity": "sha512-vD8HJ5raRcWOyymsR6Z3o6+RzfEPCnVLMFJ6vRslO1jt4LO6dUo5Qnpg7y4RkZFM2DMe3WUirkI5c16onjrc6A==", + "version": "4.27.4", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.27.4.tgz", + "integrity": "sha512-RLKxqHEMjh/RGLsDxAEsaLO3mWgyoU6x9w6n1ikAzet4B3gI2/3yP6PWY2p9QzRTh6MfEIXB3MwsOY0Iv3vNrw==", "devOptional": true, + "license": "MIT", "dependencies": { - "@types/estree": "1.0.5" + "@types/estree": "1.0.6" }, "bin": { "rollup": "dist/bin/rollup" @@ -7029,22 +7445,24 @@ "npm": ">=8.0.0" }, "optionalDependencies": { - "@rollup/rollup-android-arm-eabi": "4.22.4", - "@rollup/rollup-android-arm64": "4.22.4", - "@rollup/rollup-darwin-arm64": "4.22.4", - "@rollup/rollup-darwin-x64": "4.22.4", - "@rollup/rollup-linux-arm-gnueabihf": "4.22.4", - "@rollup/rollup-linux-arm-musleabihf": "4.22.4", - "@rollup/rollup-linux-arm64-gnu": "4.22.4", - "@rollup/rollup-linux-arm64-musl": "4.22.4", - "@rollup/rollup-linux-powerpc64le-gnu": "4.22.4", - "@rollup/rollup-linux-riscv64-gnu": "4.22.4", - "@rollup/rollup-linux-s390x-gnu": "4.22.4", - "@rollup/rollup-linux-x64-gnu": "4.22.4", - "@rollup/rollup-linux-x64-musl": "4.22.4", - "@rollup/rollup-win32-arm64-msvc": "4.22.4", - "@rollup/rollup-win32-ia32-msvc": "4.22.4", - "@rollup/rollup-win32-x64-msvc": "4.22.4", + "@rollup/rollup-android-arm-eabi": "4.27.4", + "@rollup/rollup-android-arm64": "4.27.4", + "@rollup/rollup-darwin-arm64": "4.27.4", + "@rollup/rollup-darwin-x64": "4.27.4", + "@rollup/rollup-freebsd-arm64": "4.27.4", + "@rollup/rollup-freebsd-x64": "4.27.4", + "@rollup/rollup-linux-arm-gnueabihf": "4.27.4", + "@rollup/rollup-linux-arm-musleabihf": "4.27.4", + "@rollup/rollup-linux-arm64-gnu": "4.27.4", + "@rollup/rollup-linux-arm64-musl": "4.27.4", + "@rollup/rollup-linux-powerpc64le-gnu": "4.27.4", + "@rollup/rollup-linux-riscv64-gnu": "4.27.4", + "@rollup/rollup-linux-s390x-gnu": "4.27.4", + "@rollup/rollup-linux-x64-gnu": "4.27.4", + "@rollup/rollup-linux-x64-musl": "4.27.4", + "@rollup/rollup-win32-arm64-msvc": "4.27.4", + "@rollup/rollup-win32-ia32-msvc": "4.27.4", + "@rollup/rollup-win32-x64-msvc": "4.27.4", "fsevents": "~2.3.2" } }, @@ -7067,6 +7485,7 @@ "url": "https://feross.org/support" } ], + "license": "MIT", "dependencies": { "queue-microtask": "^1.2.2" } @@ -7076,6 +7495,7 @@ "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.2.tgz", "integrity": "sha512-vj6RsCsWBCf19jIeHEfkRMw8DPiBb+DMXklQ/1SGDHOMlHdPUkZXFQ2YdplS23zESTijAcurb1aSgJA3AgMu1Q==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.7", "get-intrinsic": "^1.2.4", @@ -7094,6 +7514,7 @@ "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.3.tgz", "integrity": "sha512-CdASjNJPvRa7roO6Ra/gLYBTzYzzPyyBXxIMdGW3USQLyjWEls2RgW5UBTXaQVp+OrpeCK3bLem8smtmheoRuw==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.6", "es-errors": "^1.3.0", @@ -7110,20 +7531,19 @@ "version": "0.23.2", "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.2.tgz", "integrity": "sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==", + "license": "MIT", "dependencies": { "loose-envify": "^1.1.0" } }, "node_modules/semver": { - "version": "7.6.3", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", - "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "dev": true, + "license": "ISC", "bin": { "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" } }, "node_modules/set-function-length": { @@ -7131,6 +7551,7 @@ "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", "dev": true, + "license": "MIT", "dependencies": { "define-data-property": "^1.1.4", "es-errors": "^1.3.0", @@ -7148,6 +7569,7 @@ "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.2.tgz", "integrity": "sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==", "dev": true, + "license": "MIT", "dependencies": { "define-data-property": "^1.1.4", "es-errors": "^1.3.0", @@ -7161,13 +7583,15 @@ "node_modules/shallowequal": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/shallowequal/-/shallowequal-1.1.0.tgz", - "integrity": "sha512-y0m1JoUZSlPAjXVtPPW70aZWfIL/dSP7AFkRnniLCrK/8MDKog3TySTBmckD+RObVxH0v4Tox67+F14PdED2oQ==" + "integrity": "sha512-y0m1JoUZSlPAjXVtPPW70aZWfIL/dSP7AFkRnniLCrK/8MDKog3TySTBmckD+RObVxH0v4Tox67+F14PdED2oQ==", + "license": "MIT" }, "node_modules/shebang-command": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", "dev": true, + "license": "MIT", "dependencies": { "shebang-regex": "^3.0.0" }, @@ -7180,6 +7604,7 @@ "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } @@ -7189,6 +7614,7 @@ "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.6.tgz", "integrity": "sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.7", "es-errors": "^1.3.0", @@ -7207,6 +7633,7 @@ "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } @@ -7215,6 +7642,7 @@ "version": "4.8.1", "resolved": "https://registry.npmjs.org/socket.io-client/-/socket.io-client-4.8.1.tgz", "integrity": "sha512-hJVXfu3E28NmzGk8o1sHhN3om52tRvwYeidbj7xKy2eIIse5IoKX3USlS6Tqt3BHAtflLIkCQBkzVrEEfWUyYQ==", + "license": "MIT", "dependencies": { "@socket.io/component-emitter": "~3.1.0", "debug": "~4.3.2", @@ -7239,9 +7667,10 @@ } }, "node_modules/source-map-js": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.0.tgz", - "integrity": "sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", + "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", + "license": "BSD-3-Clause", "engines": { "node": ">=0.10.0" } @@ -7261,6 +7690,7 @@ "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.11.tgz", "integrity": "sha512-NUdh0aDavY2og7IbBPenWqR9exH+E26Sv8e0/eTe1tltDGZL+GtBkDAnnyBtmekfK6/Dq3MkcGtzXFEd1LQrtg==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.7", "define-properties": "^1.2.1", @@ -7287,6 +7717,7 @@ "resolved": "https://registry.npmjs.org/string.prototype.repeat/-/string.prototype.repeat-1.0.0.tgz", "integrity": "sha512-0u/TldDbKD8bFCQ/4f5+mNRrXwZ8hg2w7ZR8wa16e8z9XpePWl3eGEcUD0OXpEH/VJH/2G3gjUtR3ZOiBe2S/w==", "dev": true, + "license": "MIT", "dependencies": { "define-properties": "^1.1.3", "es-abstract": "^1.17.5" @@ -7297,6 +7728,7 @@ "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.9.tgz", "integrity": "sha512-klHuCNxiMZ8MlsOihJhJEBJAiMVqU3Z2nEXWfWnIqjN0gEFS9J9+IxKozWWtQGcgoa1WUZzLjKPTr4ZHNFTFxw==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.7", "define-properties": "^1.2.1", @@ -7315,6 +7747,7 @@ "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.8.tgz", "integrity": "sha512-p73uL5VCHCO2BZZ6krwwQE3kCzM7NKmis8S//xEC6fQonchbum4eP6kR4DLEjQFO3Wnj3Fuo8NM0kOSjVdHjZQ==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.7", "define-properties": "^1.2.1", @@ -7329,6 +7762,7 @@ "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.8.tgz", "integrity": "sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.7", "define-properties": "^1.2.1", @@ -7356,15 +7790,16 @@ } }, "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==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==", "dev": true, + "license": "MIT", "dependencies": { - "ansi-regex": "^5.0.1" + "ansi-regex": "^2.0.0" }, "engines": { - "node": ">=8" + "node": ">=0.10.0" } }, "node_modules/strip-json-comments": { @@ -7372,6 +7807,7 @@ "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" }, @@ -7392,6 +7828,7 @@ "version": "6.1.13", "resolved": "https://registry.npmjs.org/styled-components/-/styled-components-6.1.13.tgz", "integrity": "sha512-M0+N2xSnAtwcVAQeFEsGWFFxXDftHUD7XrKla06QbpUMmbmtFBMMTcKWvFXtWxuD5qQkB8iU5gk6QASlx2ZRMw==", + "license": "MIT", "dependencies": { "@emotion/is-prop-valid": "1.2.2", "@emotion/unitless": "0.8.1", @@ -7418,18 +7855,21 @@ "node_modules/styled-components/node_modules/tslib": { "version": "2.6.2", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "license": "0BSD" }, "node_modules/stylis": { "version": "4.3.2", "resolved": "https://registry.npmjs.org/stylis/-/stylis-4.3.2.tgz", - "integrity": "sha512-bhtUjWd/z6ltJiQwg0dUfxEJ+W+jdqQd8TbWLWyeIJHlnsqmGLRFFd8e5mA0AZi/zx90smXRlN66YMTcaSFifg==" + "integrity": "sha512-bhtUjWd/z6ltJiQwg0dUfxEJ+W+jdqQd8TbWLWyeIJHlnsqmGLRFFd8e5mA0AZi/zx90smXRlN66YMTcaSFifg==", + "license": "MIT" }, "node_modules/supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, + "license": "MIT", "dependencies": { "has-flag": "^4.0.0" }, @@ -7442,6 +7882,7 @@ "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.4" }, @@ -7450,10 +7891,11 @@ } }, "node_modules/synckit": { - "version": "0.9.1", - "resolved": "https://registry.npmjs.org/synckit/-/synckit-0.9.1.tgz", - "integrity": "sha512-7gr8p9TQP6RAHusBOSLs46F4564ZrjV8xFmw5zCmgmhGUcw2hxsShhJ6CEiHQMgPDwAQ1fWHPM0ypc4RMAig4A==", + "version": "0.9.2", + "resolved": "https://registry.npmjs.org/synckit/-/synckit-0.9.2.tgz", + "integrity": "sha512-vrozgXDQwYO72vHjUb/HnFbQx1exDjoKzqx23aXEg2a9VIg2TSFZ8FmeZpTjUCFMYw7mpX4BE2SFu8wI7asYsw==", "dev": true, + "license": "MIT", "dependencies": { "@pkgr/core": "^0.1.0", "tslib": "^2.6.2" @@ -7468,19 +7910,47 @@ "node_modules/tabbable": { "version": "6.2.0", "resolved": "https://registry.npmjs.org/tabbable/-/tabbable-6.2.0.tgz", - "integrity": "sha512-Cat63mxsVJlzYvN51JmVXIgNoUokrIaT2zLclCXjRd8boZ0004U4KCs/sToJ75C6sdlByWxpYnb5Boif1VSFew==" + "integrity": "sha512-Cat63mxsVJlzYvN51JmVXIgNoUokrIaT2zLclCXjRd8boZ0004U4KCs/sToJ75C6sdlByWxpYnb5Boif1VSFew==", + "license": "MIT" + }, + "node_modules/tauri-plugin-sentry-api": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/tauri-plugin-sentry-api/-/tauri-plugin-sentry-api-0.2.0.tgz", + "integrity": "sha512-HnIbCVnq7jjrj8aRyzP5hfU8GwfSIkl65BH7MHj0Vbx1X4fqrKNc2lzzP/wjjrJ1hsXJCg5bRKF26HshPmgw8g==", + "license": "Apache-2.0 OR MIT", + "dependencies": { + "@tauri-apps/api": "2.0.0-beta.8", + "tslib": "^2.6.0" + } + }, + "node_modules/tauri-plugin-sentry-api/node_modules/@tauri-apps/api": { + "version": "2.0.0-beta.8", + "resolved": "https://registry.npmjs.org/@tauri-apps/api/-/api-2.0.0-beta.8.tgz", + "integrity": "sha512-fN5u+9HsSfhRaXGOdD2kPGbqDgyX+nkm1XF/4d/LNuM4WiNfvHjjRAqWQYBhQsg1aF9nsTPmSW+tmy+Yn5T5+A==", + "license": "Apache-2.0 OR MIT", + "engines": { + "node": ">= 18", + "npm": ">= 6.6.0", + "yarn": ">= 1.19.1" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/tauri" + } }, "node_modules/text-table": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/to-regex-range": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", "dev": true, + "license": "MIT", "dependencies": { "is-number": "^7.0.0" }, @@ -7491,7 +7961,8 @@ "node_modules/tr46": { "version": "0.0.3", "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", - "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==" + "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", + "license": "MIT" }, "node_modules/trim-lines": { "version": "3.0.1", @@ -7514,10 +7985,11 @@ } }, "node_modules/ts-api-utils": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.3.0.tgz", - "integrity": "sha512-UQMIo7pb8WRomKR1/+MFVLTroIvDVtMX3K6OUir8ynLyzB8Jeriont2bTAtmNPa1ekAgN7YPDyf6V+ygrdU+eQ==", + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.4.3.tgz", + "integrity": "sha512-i3eMG77UTMD0hZhgRS562pv83RC6ukSAC2GMNWc+9dieh/+jDM5u5YG+NHX6VNDRHQcHwmsTHctP9LhbC3WxVw==", "dev": true, + "license": "MIT", "engines": { "node": ">=16" }, @@ -7526,9 +7998,10 @@ } }, "node_modules/tsconfck": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/tsconfck/-/tsconfck-3.1.3.tgz", - "integrity": "sha512-ulNZP1SVpRDesxeMLON/LtWM8HIgAJEIVpVVhBM6gsmvQ8+Rh+ZG7FWGvHh7Ah3pRABwVJWklWCr/BTZSv0xnQ==", + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/tsconfck/-/tsconfck-3.1.4.tgz", + "integrity": "sha512-kdqWFGVJqe+KGYvlSO9NIaWn9jT1Ny4oKVzAJsKii5eoE9snzTJzL4+MMVOMn+fikWGFmKEylcXL710V/kIPJQ==", + "license": "MIT", "bin": { "tsconfck": "bin/tsconfck.js" }, @@ -7545,15 +8018,17 @@ } }, "node_modules/tslib": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", - "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==" + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", + "license": "0BSD" }, "node_modules/type-check": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", "dev": true, + "license": "MIT", "dependencies": { "prelude-ls": "^1.2.1" }, @@ -7566,6 +8041,7 @@ "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", "dev": true, + "license": "(MIT OR CC0-1.0)", "engines": { "node": ">=10" }, @@ -7578,6 +8054,7 @@ "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.2.tgz", "integrity": "sha512-gEymJYKZtKXzzBzM4jqa9w6Q1Jjm7x2d+sh19AdsD4wqnMPDYyvwpsIc2Q/835kHuo3BEQ7CjelGhfTsoBb2MQ==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.7", "es-errors": "^1.3.0", @@ -7592,6 +8069,7 @@ "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.1.tgz", "integrity": "sha512-3iMJ9q0ao7WE9tWcaYKIptkNBuOIcZCCT0d4MRvuuH88fEoEH62IuQe0OtraD3ebQEoTRk8XCBoknUNc1Y67pw==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.7", "for-each": "^0.3.3", @@ -7607,17 +8085,19 @@ } }, "node_modules/typed-array-byte-offset": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.2.tgz", - "integrity": "sha512-Ous0vodHa56FviZucS2E63zkgtgrACj7omjwd/8lTEMEPFFyjfixMZ1ZXenpgCFBBt4EC1J2XsyVS2gkG0eTFA==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.3.tgz", + "integrity": "sha512-GsvTyUHTriq6o/bHcTd0vM7OQ9JEdlvluu9YISaA7+KzDzPaIzEeDFNkTfhdE3MYcNhNi0vq/LlegYgIs5yPAw==", "dev": true, + "license": "MIT", "dependencies": { "available-typed-arrays": "^1.0.7", "call-bind": "^1.0.7", "for-each": "^0.3.3", "gopd": "^1.0.1", "has-proto": "^1.0.3", - "is-typed-array": "^1.1.13" + "is-typed-array": "^1.1.13", + "reflect.getprototypeof": "^1.0.6" }, "engines": { "node": ">= 0.4" @@ -7627,17 +8107,18 @@ } }, "node_modules/typed-array-length": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.6.tgz", - "integrity": "sha512-/OxDN6OtAk5KBpGb28T+HZc2M+ADtvRxXrKKbUwtsLgdoxgX13hyy7ek6bFRl5+aBs2yZzB0c4CnQfAtVypW/g==", + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.7.tgz", + "integrity": "sha512-3KS2b+kL7fsuk/eJZ7EQdnEmQoaho/r6KUef7hxvltNA5DR8NAUM+8wJMbJyZ4G9/7i3v5zPBIMN5aybAh2/Jg==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.7", "for-each": "^0.3.3", "gopd": "^1.0.1", - "has-proto": "^1.0.3", "is-typed-array": "^1.1.13", - "possible-typed-array-names": "^1.0.0" + "possible-typed-array-names": "^1.0.0", + "reflect.getprototypeof": "^1.0.6" }, "engines": { "node": ">= 0.4" @@ -7692,6 +8173,7 @@ "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz", "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.2", "has-bigints": "^1.0.2", @@ -7801,6 +8283,7 @@ "resolved": "https://registry.npmjs.org/unplugin/-/unplugin-1.0.1.tgz", "integrity": "sha512-aqrHaVBWW1JVKBHmGo33T5TxeL0qWzfvjWokObHA9bYmN7eNDkwOxmLjhioHl9878qDFMAaT51XNroRyuz7WxA==", "dev": true, + "license": "MIT", "dependencies": { "acorn": "^8.8.1", "chokidar": "^3.5.3", @@ -7844,6 +8327,7 @@ "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { "punycode": "^2.1.0" } @@ -7852,8 +8336,7 @@ "version": "1.2.2", "resolved": "https://registry.npmjs.org/use-sync-external-store/-/use-sync-external-store-1.2.2.tgz", "integrity": "sha512-PElTlVMwpblvbNqQ82d2n6RjStvdSoNe9FG28kNfz3WiXilJm4DdNkEzRhCZuIDwY8U08WVihhGR5iRqAwfDiw==", - "optional": true, - "peer": true, + "license": "MIT", "peerDependencies": { "react": "^16.8.0 || ^17.0.0 || ^18.0.0" } @@ -7866,6 +8349,7 @@ "https://github.com/sponsors/broofa", "https://github.com/sponsors/ctavan" ], + "license": "MIT", "bin": { "uuid": "dist/bin/uuid" } @@ -7903,6 +8387,7 @@ "resolved": "https://registry.npmjs.org/vite/-/vite-5.4.11.tgz", "integrity": "sha512-c7jFQRklXua0mTzneGW9QVyxFjUgwcihC4bXEtujIo2ouWCe1Ajt/amn2PCxYnhYfd5k09JX3SB7OYWFKYqj8Q==", "devOptional": true, + "license": "MIT", "dependencies": { "esbuild": "^0.21.3", "postcss": "^8.4.43", @@ -7977,9 +8462,9 @@ } }, "node_modules/vite/node_modules/postcss": { - "version": "8.4.44", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.44.tgz", - "integrity": "sha512-Aweb9unOEpQ3ezu4Q00DPvvM2ZTUitJdNKeP/+uQgr1IBIqu574IaZoURId7BKtWMREwzKa9OgzPzezWGPWFQw==", + "version": "8.4.49", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.49.tgz", + "integrity": "sha512-OCVPnIObs4N29kxTjzLfUryOkvZEq+pf8jTF0lg8E7uETuWHA+v7j3c/xJmiqpX450191LlmZfUKkXxkTry7nA==", "devOptional": true, "funding": [ { @@ -7995,10 +8480,11 @@ "url": "https://github.com/sponsors/ai" } ], + "license": "MIT", "dependencies": { "nanoid": "^3.3.7", - "picocolors": "^1.0.1", - "source-map-js": "^1.2.0" + "picocolors": "^1.1.1", + "source-map-js": "^1.2.1" }, "engines": { "node": "^10 || ^12 || >=14" @@ -8008,6 +8494,7 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/void-elements/-/void-elements-3.1.0.tgz", "integrity": "sha512-Dhxzh5HZuiHQhbvTW9AMetFfBHDMYpo23Uo9btPXgdYP+3T5S+p+jgNy7spra+veYhBP2dCSgxR/i2Y02h5/6w==", + "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -8017,6 +8504,7 @@ "resolved": "https://registry.npmjs.org/vue-eslint-parser/-/vue-eslint-parser-9.4.3.tgz", "integrity": "sha512-2rYRLWlIpaiN8xbPiDyXZXRgLGOtWxERV7ND5fFAv5qo1D2N9Fu9MNajBNc6o13lZ+24DAWCkQCvj4klgmcITg==", "dev": true, + "license": "MIT", "dependencies": { "debug": "^4.3.4", "eslint-scope": "^7.1.1", @@ -8041,6 +8529,7 @@ "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { "esrecurse": "^4.3.0", "estraverse": "^5.2.0" @@ -8052,11 +8541,25 @@ "url": "https://opencollective.com/eslint" } }, + "node_modules/vue-eslint-parser/node_modules/eslint-visitor-keys": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, "node_modules/vue-eslint-parser/node_modules/espree": { "version": "9.6.1", "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { "acorn": "^8.9.0", "acorn-jsx": "^5.3.2", @@ -8069,16 +8572,31 @@ "url": "https://opencollective.com/eslint" } }, + "node_modules/vue-eslint-parser/node_modules/semver": { + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", + "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/webidl-conversions": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", - "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==" + "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==", + "license": "BSD-2-Clause" }, "node_modules/webpack-sources": { "version": "3.2.3", "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz", "integrity": "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==", "dev": true, + "license": "MIT", "engines": { "node": ">=10.13.0" } @@ -8087,12 +8605,14 @@ "version": "0.5.0", "resolved": "https://registry.npmjs.org/webpack-virtual-modules/-/webpack-virtual-modules-0.5.0.tgz", "integrity": "sha512-kyDivFZ7ZM0BVOUteVbDFhlRt7Ah/CSPwJdi8hBpkK7QLumUqdLtVfm/PX/hkcnrvr0i77fO5+TjZ94Pe+C9iw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/whatwg-url": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", + "license": "MIT", "dependencies": { "tr46": "~0.0.3", "webidl-conversions": "^3.0.0" @@ -8103,6 +8623,7 @@ "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", "dev": true, + "license": "ISC", "dependencies": { "isexe": "^2.0.0" }, @@ -8118,6 +8639,7 @@ "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", "dev": true, + "license": "MIT", "dependencies": { "is-bigint": "^1.0.1", "is-boolean-object": "^1.1.0", @@ -8130,16 +8652,18 @@ } }, "node_modules/which-builtin-type": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/which-builtin-type/-/which-builtin-type-1.1.4.tgz", - "integrity": "sha512-bppkmBSsHFmIMSl8BO9TbsyzsvGjVoppt8xUiGzwiu/bhDCGxnpOKCxgqj6GuyHE0mINMDecBFPlOm2hzY084w==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/which-builtin-type/-/which-builtin-type-1.2.0.tgz", + "integrity": "sha512-I+qLGQ/vucCby4tf5HsLmGueEla4ZhwTBSqaooS+Y0BuxN4Cp+okmGuV+8mXZ84KDI9BA+oklo+RzKg0ONdSUA==", "dev": true, + "license": "MIT", "dependencies": { + "call-bind": "^1.0.7", "function.prototype.name": "^1.1.6", "has-tostringtag": "^1.0.2", "is-async-function": "^2.0.0", "is-date-object": "^1.0.5", - "is-finalizationregistry": "^1.0.2", + "is-finalizationregistry": "^1.1.0", "is-generator-function": "^1.0.10", "is-regex": "^1.1.4", "is-weakref": "^1.0.2", @@ -8160,6 +8684,7 @@ "resolved": "https://registry.npmjs.org/which-collection/-/which-collection-1.0.2.tgz", "integrity": "sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw==", "dev": true, + "license": "MIT", "dependencies": { "is-map": "^2.0.3", "is-set": "^2.0.3", @@ -8174,10 +8699,11 @@ } }, "node_modules/which-typed-array": { - "version": "1.1.15", - "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.15.tgz", - "integrity": "sha512-oV0jmFtUky6CXfkqehVvBP/LSWJ2sy4vWMioiENyJLePrBO/yKyV9OyJySfAKosh+RYkIl5zJCNZ8/4JncrpdA==", + "version": "1.1.16", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.16.tgz", + "integrity": "sha512-g+N+GAWiRj66DngFwHvISJd+ITsyphZvD1vChfVg6cEdnzy53GzB3oy0fUNlvhz7H7+MiqhYr26qxQShCpKTTQ==", "dev": true, + "license": "MIT", "dependencies": { "available-typed-arrays": "^1.0.7", "call-bind": "^1.0.7", @@ -8197,6 +8723,7 @@ "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -8205,7 +8732,8 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/ws": { "version": "8.17.1", @@ -8229,9 +8757,9 @@ } }, "node_modules/xmlhttprequest-ssl": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/xmlhttprequest-ssl/-/xmlhttprequest-ssl-2.1.1.tgz", - "integrity": "sha512-ptjR8YSJIXoA3Mbv5po7RtSYHO6mZr8s7i5VGmEk7QY2pQWyT1o0N+W1gKbOyJPUCGXGnuw0wqe8f0L6Y0ny7g==", + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/xmlhttprequest-ssl/-/xmlhttprequest-ssl-2.1.2.tgz", + "integrity": "sha512-TEU+nJVUUnA4CYJFLvK5X9AOeH4KvDvhIfm0vV1GaQRtchnG0hgK5p8hw/xjv8cunWYCsiPCSDzObPyhEwq3KQ==", "engines": { "node": ">=0.4.0" } @@ -8248,6 +8776,7 @@ "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", "dev": true, + "license": "MIT", "engines": { "node": ">=10" }, @@ -8259,6 +8788,7 @@ "version": "5.0.1", "resolved": "https://registry.npmjs.org/zustand/-/zustand-5.0.1.tgz", "integrity": "sha512-pRET7Lao2z+n5R/HduXMio35TncTlSW68WsYBq2Lg1ASspsNGjpwLAsij3RpouyV6+kHMwwwzP0bZPD70/Jx/w==", + "license": "MIT", "engines": { "node": ">=12.20.0" }, diff --git a/package.json b/package.json index f2c7f8f60..e0759ab59 100644 --- a/package.json +++ b/package.json @@ -17,7 +17,11 @@ "@floating-ui/react": "^0.26.28", "@lottiefiles/dotlottie-react": "^0.10.1", "@sentry/react": "^8.41.0", - "@tauri-apps/api": "^1", + "@tauri-apps/api": "^2.1.1", + "@tauri-apps/plugin-os": "^2.0.0", + "@tauri-apps/plugin-process": "^2.0.0", + "@tauri-apps/plugin-shell": "^2.0.1", + "@tauri-apps/plugin-updater": "^2.0.0", "emoji-regex": "^10.4.0", "framer-motion": "^11.12.0", "globals": "^15.12.0", @@ -33,6 +37,8 @@ "react-markdown": "^9.0.1", "socket.io-client": "^4.8.1", "styled-components": "^6.1.12", + "tauri-plugin-sentry-api": "^0.2.0", + "use-sync-external-store": "^1.2.2", "uuid": "^10.0.0", "vite-tsconfig-paths": "^5.1.3", "zustand": "^5.0.1" @@ -42,7 +48,7 @@ "@nabla/vite-plugin-eslint": "^2.0.5", "@sentry/vite-plugin": "^2.22.6", "@taplo/cli": "^0.7.0", - "@tauri-apps/cli": "^1.6.3", + "@tauri-apps/cli": "^2.1.0", "@types/eslint__js": "^8.42.3", "@types/node": "^22.10.1", "@types/react": "^18.3.12", diff --git a/public/locales/af/common.json b/public/locales/af/common.json index d9b8c3d26..8c5b3bc82 100644 --- a/public/locales/af/common.json +++ b/public/locales/af/common.json @@ -10,6 +10,7 @@ "hashrate": "Hashtempo", "installation-problem": "Installation problem", "max-temperature": "Maksimum temperatuur", + "minimize": "Minimize", "mode": "Modus", "not-installed-in-applications-directory": "Oops! Tari Universe needs to live in the Applications directory. Mind installing it there?", "please-try-again-later": "Probeer asseblief later weer. As die probleem voortduur, kontak ons asseblief.", @@ -22,6 +23,7 @@ "temperature": "Temperatuur", "testnet": "Toetsnetwerk", "unknown": "Onbekend", + "unminimize": "Unminimize", "usage": "Gebruik", "utilization": "Benutting", "version": "Weergawe", diff --git a/public/locales/af/mining-view.json b/public/locales/af/mining-view.json index 2ba4c91f1..64ef7a511 100644 --- a/public/locales/af/mining-view.json +++ b/public/locales/af/mining-view.json @@ -1,12 +1,15 @@ { "connection-to-node-lost": "Kontak met mynwerker verloor. Wag asseblief vir mynwerker om kontak te maak of begin weer.", + "cpu-hashrate": "CPU Hashrate", "cpu-power": "CPU Krag", "current-block-time": "Huidige bloktyd", "day": "day", "estimated-day": "Est tXTM/dag", "estimated-earnings": "Geskatte verdienste", "floor": "Vloer", + "gpu-hashrate": "GPU Hashrate", "gpu-power": "GPU Krag", + "gpu-usage": "GPU Usage", "mining-button-text": { "cancel-mining": "Kanselleer myn", "changing-mode": "Verander modus", diff --git a/public/locales/cn/common.json b/public/locales/cn/common.json index 8129ebf12..1d08840b0 100644 --- a/public/locales/cn/common.json +++ b/public/locales/cn/common.json @@ -10,6 +10,7 @@ "hashrate": "哈希率", "installation-problem": "Installation problem", "max-temperature": "最高温度", + "minimize": "Minimize", "mode": "模式", "not-installed-in-applications-directory": "Oops! Tari Universe needs to live in the Applications directory. Mind installing it there?", "please-try-again-later": "请稍后再试。如果问题仍然存在,请联系我们。", @@ -22,6 +23,7 @@ "temperature": "温度", "testnet": "测试网", "unknown": "未知", + "unminimize": "Unminimize", "usage": "使用", "utilization": "利用率", "version": "版本", diff --git a/public/locales/de/common.json b/public/locales/de/common.json index 03c81c724..071a7bb07 100644 --- a/public/locales/de/common.json +++ b/public/locales/de/common.json @@ -10,6 +10,7 @@ "hashrate": "Hashrate", "installation-problem": "Installation problem", "max-temperature": "Maximaltemperatur", + "minimize": "Minimize", "mode": "Modus", "not-installed-in-applications-directory": "Oops! Tari Universe needs to live in the Applications directory. Mind installing it there?", "please-try-again-later": "Bitte versuche es später erneut. Wenn das Problem weiterhin besteht, kontaktiere uns bitte.", @@ -22,6 +23,7 @@ "temperature": "Temperatur", "testnet": "Testnet", "unknown": "Unbekannt", + "unminimize": "Unminimize", "usage": "Nutzung", "utilization": "Auslastung", "version": "Version", diff --git a/public/locales/en/common.json b/public/locales/en/common.json index ec35d4b37..ec8890c57 100644 --- a/public/locales/en/common.json +++ b/public/locales/en/common.json @@ -10,6 +10,7 @@ "hashrate": "Hashrate", "installation-problem": "Installation problem", "max-temperature": "Max temperature", + "minimize": "Minimize", "mode": "Mode", "not-installed-in-applications-directory": "Oops! Tari Universe needs to live in the Applications directory. Mind installing it there?", "please-try-again-later": "Please try again later. If the problem persists, please contact us.", @@ -22,6 +23,7 @@ "temperature": "Temperature", "testnet": "Testnet", "unknown": "Unknown", + "unminimize": "Unminimize", "usage": "Usage", "utilization": "Utilization", "version": "Version", diff --git a/public/locales/fr/common.json b/public/locales/fr/common.json index 8e23824c6..939002009 100644 --- a/public/locales/fr/common.json +++ b/public/locales/fr/common.json @@ -10,6 +10,7 @@ "hashrate": "Taux de hachage", "installation-problem": "Installation problem", "max-temperature": "Température maximale", + "minimize": "Minimize", "mode": "Mode", "not-installed-in-applications-directory": "Oops! Tari Universe needs to live in the Applications directory. Mind installing it there?", "please-try-again-later": "Réessaye plus tard s'il te plaît. Si le problème persiste, contacte-nous s'il te plaît.", @@ -22,6 +23,7 @@ "temperature": "Température", "testnet": "Testnet", "unknown": "Inconnu", + "unminimize": "Unminimize", "usage": "Utilisation", "utilization": "Utilisation", "version": "Version", diff --git a/public/locales/hi/common.json b/public/locales/hi/common.json index 92098b772..496edb6aa 100644 --- a/public/locales/hi/common.json +++ b/public/locales/hi/common.json @@ -10,6 +10,7 @@ "hashrate": "हैश दर", "installation-problem": "Installation problem", "max-temperature": "अधिकतम तापमान", + "minimize": "Minimize", "mode": "मोड", "not-installed-in-applications-directory": "Oops! Tari Universe needs to live in the Applications directory. Mind installing it there?", "please-try-again-later": "कृपया बाद में पुनः प्रयास करें। यदि समस्या बनी रहती है, तो कृपया हमसे संपर्क करें।", @@ -22,6 +23,7 @@ "temperature": "तापमान", "testnet": "टेस्टनेट", "unknown": "अज्ञात", + "unminimize": "Unminimize", "usage": "उपयोग", "utilization": "उपयोग", "version": "संस्करण", diff --git a/public/locales/id/common.json b/public/locales/id/common.json index b7c0edf17..b0bed0dfe 100644 --- a/public/locales/id/common.json +++ b/public/locales/id/common.json @@ -10,6 +10,7 @@ "hashrate": "Hashrate", "installation-problem": "Installation problem", "max-temperature": "Suhu maksimum", + "minimize": "Minimize", "mode": "Mode", "not-installed-in-applications-directory": "Oops! Tari Universe needs to live in the Applications directory. Mind installing it there?", "please-try-again-later": "Silakan coba lagi nanti. Jika masalah berlanjut, silakan hubungi kami.", @@ -22,6 +23,7 @@ "temperature": "Suhu", "testnet": "Testnet", "unknown": "Tidak diketahui", + "unminimize": "Unminimize", "usage": "Penggunaan", "utilization": "Pemanfaatan", "version": "Versi", diff --git a/public/locales/ja/common.json b/public/locales/ja/common.json index 4d99bda5e..fa9db31df 100644 --- a/public/locales/ja/common.json +++ b/public/locales/ja/common.json @@ -10,6 +10,7 @@ "hashrate": "ハッシュレート", "installation-problem": "Installation problem", "max-temperature": "最大温度", + "minimize": "Minimize", "mode": "モード", "not-installed-in-applications-directory": "Oops! Tari Universe needs to live in the Applications directory. Mind installing it there?", "please-try-again-later": "後でもう一度お試しください。問題が続く場合は、お問い合わせください。", @@ -22,6 +23,7 @@ "temperature": "温度", "testnet": "テストネット", "unknown": "不明", + "unminimize": "Unminimize", "usage": "使用量", "utilization": "利用率", "version": "バージョン", diff --git a/public/locales/ko/common.json b/public/locales/ko/common.json index c2979acb5..0c929b243 100644 --- a/public/locales/ko/common.json +++ b/public/locales/ko/common.json @@ -10,6 +10,7 @@ "hashrate": "해시레이트", "installation-problem": "Installation problem", "max-temperature": "최대 온도", + "minimize": "Minimize", "mode": "모드", "not-installed-in-applications-directory": "Oops! Tari Universe needs to live in the Applications directory. Mind installing it there?", "please-try-again-later": "나중에 다시 시도해 주세요. 문제가 계속되면 저희에게 연락해 주세요.", @@ -22,6 +23,7 @@ "temperature": "온도", "testnet": "테스트넷", "unknown": "알 수 없음", + "unminimize": "Unminimize", "usage": "사용량", "utilization": "활용도", "version": "버전", diff --git a/public/locales/pl/common.json b/public/locales/pl/common.json index aa761a148..bbdc2e7ae 100644 --- a/public/locales/pl/common.json +++ b/public/locales/pl/common.json @@ -10,6 +10,7 @@ "hashrate": "Prędkość ( hashrate )", "installation-problem": "Installation problem", "max-temperature": "Maksymalna temperatura", + "minimize": "Minimize", "mode": "Tryb", "not-installed-in-applications-directory": "Oops! Tari Universe needs to live in the Applications directory. Mind installing it there?", "please-try-again-later": "Spróbuj ponownie później. Jeśli problem będzie się powtarzał, skontaktuj się z nami.", @@ -22,6 +23,7 @@ "temperature": "Temperatura", "testnet": "Testnet", "unknown": "Nieznany", + "unminimize": "Unminimize", "usage": "Użycie", "utilization": "Wykorzystanie", "version": "Wersja", diff --git a/public/locales/ru/common.json b/public/locales/ru/common.json index d362e6a3a..086772191 100644 --- a/public/locales/ru/common.json +++ b/public/locales/ru/common.json @@ -10,6 +10,7 @@ "hashrate": "Хэшрейт", "installation-problem": "Installation problem", "max-temperature": "Максимальная температура", + "minimize": "Minimize", "mode": "Режим", "not-installed-in-applications-directory": "Oops! Tari Universe needs to live in the Applications directory. Mind installing it there?", "please-try-again-later": "Пожалуйста, попробуйте позже. Если проблема сохраняется, свяжитесь с нами.", @@ -22,6 +23,7 @@ "temperature": "Температура", "testnet": "Тестовая сеть", "unknown": "Неизвестно", + "unminimize": "Unminimize", "usage": "Использование", "utilization": "Использование", "version": "Версия", diff --git a/public/locales/tr/common.json b/public/locales/tr/common.json index bb55db73d..907809255 100644 --- a/public/locales/tr/common.json +++ b/public/locales/tr/common.json @@ -10,6 +10,7 @@ "hashrate": "Hashrate", "installation-problem": "Installation problem", "max-temperature": "Maks. Sıcaklık", + "minimize": "Minimize", "mode": "Mod", "not-installed-in-applications-directory": "Oops! Tari Universe needs to live in the Applications directory. Mind installing it there?", "please-try-again-later": "Lütfen daha sonra tekrar deneyin. Sorun devam ederse, lütfen bizimle iletişime geçin.", @@ -22,6 +23,7 @@ "temperature": "Sıcaklık", "testnet": "Testnet", "unknown": "Bilinmeyen", + "unminimize": "Unminimize", "usage": "Kullanım", "utilization": "Fayda", "version": "Versiyon", diff --git a/public/splash.html b/public/splash.html index 8ee044b30..5ec3fa41d 100644 --- a/public/splash.html +++ b/public/splash.html @@ -35,11 +35,11 @@ diff --git a/src-tauri/Cargo.lock b/src-tauri/Cargo.lock index 6ec57c9a1..b4dde9d62 100644 --- a/src-tauri/Cargo.lock +++ b/src-tauri/Cargo.lock @@ -142,18 +142,15 @@ dependencies = [ [[package]] name = "anyhow" -version = "1.0.92" +version = "1.0.93" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "74f37166d7d48a0284b99dd824694c26119c700b53bf0d1540cdb147dbdaaf13" -dependencies = [ - "backtrace", -] +checksum = "4c95c10ba0b00a02636238b814946408b1322d5ac4760326e6fb8ec956d85775" [[package]] name = "arbitrary" -version = "1.4.0" +version = "1.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "775a8770d29db3dadcb858482cc240af7b2ffde4ac4de67d1d4955728103f0e2" +checksum = "dde20b3d026af13f561bdd0f15edf01fc734f0dafcedbaf42bba506a9517f223" dependencies = [ "derive_arbitrary", ] @@ -189,31 +186,33 @@ checksum = "7c02d123df017efcdfbd739ef81735b36c5ba83ec3c59c80a9d7ecc718f92e50" [[package]] name = "async-broadcast" -version = "0.4.1" +version = "0.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6d26004fe83b2d1cd3a97609b21e39f9a31535822210fe83205d2ce48866ea61" +checksum = "20cd0e2e25ea8e5f7e9df04578dc6cf5c83577fd09b1a46aaf5c85e1c33f2a7e" dependencies = [ "event-listener", + "event-listener-strategy", "futures-core", - "parking_lot", + "pin-project-lite", ] [[package]] name = "async-channel" -version = "1.9.0" +version = "2.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "81953c529336010edd6d8e358f886d9581267795c61b19475b71314bffa46d35" +checksum = "89b47800b0be77592da0afd425cc03468052844aff33b84e33cc696f64e77b6a" dependencies = [ "concurrent-queue", - "event-listener", + "event-listener-strategy", "futures-core", + "pin-project-lite", ] [[package]] name = "async-compression" -version = "0.4.17" +version = "0.4.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0cb8f1d480b0ea3783ab015936d2a55c87e219676f0c0b7dec61494043f21857" +checksum = "df895a515f70646414f4b45c0b79082783b80552b373a68283012928df56f522" dependencies = [ "bzip2", "deflate64", @@ -235,49 +234,69 @@ checksum = "30ca9a001c1e8ba5149f91a74362376cc6bc5b919d92d988668657bd570bdcec" dependencies = [ "async-task", "concurrent-queue", - "fastrand 2.1.1", - "futures-lite 2.4.0", + "fastrand", + "futures-lite", "slab", ] +[[package]] +name = "async-fs" +version = "2.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ebcd09b382f40fcd159c2d695175b2ae620ffa5f3bd6f664131efff4e8b9e04a" +dependencies = [ + "async-lock", + "blocking", + "futures-lite", +] + [[package]] name = "async-io" -version = "1.13.0" +version = "2.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0fc5b45d93ef0529756f812ca52e44c221b35341892d3dcc34132ac02f3dd2af" +checksum = "43a2b323ccce0a1d90b449fd71f2a06ca7faa7c54c2751f06c9bd851fc061059" dependencies = [ "async-lock", - "autocfg", "cfg-if", "concurrent-queue", - "futures-lite 1.13.0", - "log", + "futures-io", + "futures-lite", "parking", - "polling 2.8.0", - "rustix 0.37.27", + "polling", + "rustix", "slab", - "socket2 0.4.10", - "waker-fn", + "tracing", + "windows-sys 0.59.0", ] [[package]] name = "async-lock" -version = "2.8.0" +version = "3.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "287272293e9d8c41773cec55e365490fe034813a2f172f502d6ddcf75b2f582b" +checksum = "ff6e472cdea888a4bd64f342f09b3f50e1886d32afe8df3d663c01140b811b18" dependencies = [ "event-listener", + "event-listener-strategy", + "pin-project-lite", ] [[package]] -name = "async-recursion" -version = "0.3.2" +name = "async-process" +version = "2.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d7d78656ba01f1b93024b7c3a0467f1608e4be67d725749fdcd7d2c7678fd7a2" +checksum = "63255f1dc2381611000436537bbedfe83183faa303a5a0edaf191edef06526bb" dependencies = [ - "proc-macro2", - "quote", - "syn 1.0.109", + "async-channel", + "async-io", + "async-lock", + "async-signal", + "async-task", + "blocking", + "cfg-if", + "event-listener", + "futures-lite", + "rustix", + "tracing", ] [[package]] @@ -288,7 +307,25 @@ checksum = "3b43422f69d8ff38f95f1b2bb76517c91589a924d1559a0e935d7c8ce0274c11" dependencies = [ "proc-macro2", "quote", - "syn 2.0.87", + "syn 2.0.89", +] + +[[package]] +name = "async-signal" +version = "0.2.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "637e00349800c0bdf8bfc21ebbc0b6524abea702b0da4168ac00d070d0c0b9f3" +dependencies = [ + "async-io", + "async-lock", + "atomic-waker", + "cfg-if", + "futures-core", + "futures-io", + "rustix", + "signal-hook-registry", + "slab", + "windows-sys 0.59.0", ] [[package]] @@ -310,7 +347,7 @@ checksum = "c7c24de15d275a1ecfd47a380fb4d5ec9bfe0933f309ed5e705b775596a3574d" dependencies = [ "proc-macro2", "quote", - "syn 2.0.87", + "syn 2.0.89", ] [[package]] @@ -327,7 +364,7 @@ checksum = "721cae7de5c34fbb2acd27e21e6d2cf7b886dce0c27388d46c4e6c47ea4318dd" dependencies = [ "proc-macro2", "quote", - "syn 2.0.87", + "syn 2.0.89", ] [[package]] @@ -339,35 +376,34 @@ dependencies = [ "async-compression", "chrono", "crc32fast", - "futures-lite 2.4.0", + "futures-lite", "pin-project 1.1.7", - "thiserror", + "thiserror 1.0.69", "tokio", "tokio-util 0.7.12", ] [[package]] name = "atk" -version = "0.15.1" +version = "0.18.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2c3d816ce6f0e2909a96830d6911c2aff044370b1ef92d7f267b43bae5addedd" +checksum = "b4af014b17dd80e8af9fa689b2d4a211ddba6eb583c1622f35d0cb543f6b17e4" dependencies = [ "atk-sys", - "bitflags 1.3.2", "glib", "libc", ] [[package]] name = "atk-sys" -version = "0.15.1" +version = "0.18.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "58aeb089fb698e06db8089971c7ee317ab9644bade33383f63631437b03aafb6" +checksum = "251e0b7d90e33e0ba930891a505a9a35ece37b2dd37a14f3ffc306c13b980009" dependencies = [ "glib-sys", "gobject-sys", "libc", - "system-deps 6.2.2", + "system-deps", ] [[package]] @@ -382,8 +418,8 @@ version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1f012b8cc0c850f34117ec8252a44418f2e34a2cf501de89e29b241ae5f79471" dependencies = [ - "dirs", - "thiserror", + "dirs 4.0.0", + "thiserror 1.0.69", "winreg 0.10.1", ] @@ -395,18 +431,18 @@ checksum = "ace50bade8e6234aa140d9a2f552bbee1db4d353f69b8217bc503490fc1a9f26" [[package]] name = "axum" -version = "0.7.7" +version = "0.7.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "504e3947307ac8326a5437504c517c4b56716c9d98fac0028c2acc7ca47d70ae" +checksum = "edca88bc138befd0323b20752846e6587272d3b03b0343c8ea28a6f819e6e71f" dependencies = [ "async-trait", "axum-core", - "bytes 1.8.0", + "bytes 1.9.0", "futures-util", - "http 1.1.0", - "http-body 1.0.1", + "http", + "http-body", "http-body-util", - "itoa 1.0.11", + "itoa 1.0.14", "matchit", "memchr", "mime", @@ -414,7 +450,7 @@ dependencies = [ "pin-project-lite", "rustversion", "serde", - "sync_wrapper 1.0.1", + "sync_wrapper 1.0.2", "tower 0.5.1", "tower-layer", "tower-service", @@ -427,15 +463,15 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "09f2bd6146b97ae3359fa0cc6d6b376d9539582c7b4220f041a33ec24c226199" dependencies = [ "async-trait", - "bytes 1.8.0", + "bytes 1.9.0", "futures-util", - "http 1.1.0", - "http-body 1.0.1", + "http", + "http-body", "http-body-util", "mime", "pin-project-lite", "rustversion", - "sync_wrapper 1.0.1", + "sync_wrapper 1.0.2", "tower-layer", "tower-service", ] @@ -461,7 +497,7 @@ version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "978e81a45367d2409ecd33369a45dda2e9a3ca516153ec194de1fbda4b9fb79d" dependencies = [ - "thiserror", + "thiserror 1.0.69", ] [[package]] @@ -573,11 +609,33 @@ dependencies = [ "generic-array", ] +[[package]] +name = "block2" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2c132eebf10f5cad5289222520a4a058514204aed6d791f1cf4fe8088b82d15f" +dependencies = [ + "objc2", +] + +[[package]] +name = "blocking" +version = "1.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "703f41c54fc768e63e091340b424302bb1c29ef4aa0c7f10fe849dfb114d29ea" +dependencies = [ + "async-channel", + "async-task", + "futures-io", + "futures-lite", + "piper", +] + [[package]] name = "borsh" -version = "1.5.1" +version = "1.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a6362ed55def622cddc70a4746a68554d7b687713770de539e59a739b249f8ed" +checksum = "2506947f73ad44e344215ccd6403ac2ae18cd8e046e581a441bf8d199f257f03" dependencies = [ "borsh-derive", "cfg_aliases 0.2.1", @@ -585,23 +643,22 @@ dependencies = [ [[package]] name = "borsh-derive" -version = "1.5.1" +version = "1.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c3ef8005764f53cd4dca619f5bf64cafd4664dada50ece25e4d81de54c80cc0b" +checksum = "c2593a3b8b938bd68373196c9832f516be11fa487ef4ae745eb282e6a56a7244" dependencies = [ "once_cell", "proc-macro-crate 3.2.0", "proc-macro2", "quote", - "syn 2.0.87", - "syn_derive", + "syn 2.0.89", ] [[package]] name = "brotli" -version = "6.0.0" +version = "7.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "74f7971dbd9326d58187408ab83117d8ac1bb9c17b085fdacd1cf2f598719b6b" +checksum = "cc97b8f16f944bba54f0433f07e30be199b6dc2bd25937444bbad560bcea29bd" dependencies = [ "alloc-no-stdlib", "alloc-stdlib", @@ -633,16 +690,6 @@ dependencies = [ "tinyvec", ] -[[package]] -name = "bstr" -version = "1.10.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "40723b8fb387abc38f4f4a37c09073622e41dd12327033091ef8950659e6dc0c" -dependencies = [ - "memchr", - "serde", -] - [[package]] name = "build_const" version = "0.2.2" @@ -663,9 +710,9 @@ checksum = "c3ac9f8b63eca6fd385229b3675f6cc0dc5c8a5c8a54a59d4f52ffd670d87b0c" [[package]] name = "bytemuck" -version = "1.19.0" +version = "1.20.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8334215b81e418a0a7bdb8ef0849474f40bb10c8b71f1c4ed315cff49f32494d" +checksum = "8b37c88a63ffd85d15b406896cc343916d7cf57838a847b3a6f2ca5d39a5695a" [[package]] name = "byteorder" @@ -673,6 +720,12 @@ version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" +[[package]] +name = "byteorder-lite" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f1fe948ff07f4bd06c30984e69f5b4899c516a3ef74f34df92a2df2ab535495" + [[package]] name = "bytes" version = "0.5.6" @@ -681,9 +734,9 @@ checksum = "0e4cec68f03f32e44924783795810fa50a7035d8c8ebe78580ad7e6c703fba38" [[package]] name = "bytes" -version = "1.8.0" +version = "1.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9ac0150caa2ae65ca5bd83f25c7de183dea78d4d366469f148435e2acfbad0da" +checksum = "325918d6fe32f23b19878fe4b34794ae41fc19ddbe53b10571a4874d44ffd39b" dependencies = [ "serde", ] @@ -711,43 +764,76 @@ dependencies = [ [[package]] name = "cairo-rs" -version = "0.15.12" +version = "0.18.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c76ee391b03d35510d9fa917357c7f1855bd9a6659c95a1b392e33f49b3369bc" +checksum = "8ca26ef0159422fb77631dc9d17b102f253b876fe1586b03b803e63a309b4ee2" dependencies = [ - "bitflags 1.3.2", + "bitflags 2.6.0", "cairo-sys-rs", "glib", "libc", - "thiserror", + "once_cell", + "thiserror 1.0.69", ] [[package]] name = "cairo-sys-rs" -version = "0.15.1" +version = "0.18.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3c55d429bef56ac9172d25fecb85dc8068307d17acd74b377866b7a1ef25d3c8" +checksum = "685c9fa8e590b8b3d678873528d83411db17242a73fccaed827770ea0fedda51" dependencies = [ "glib-sys", "libc", - "system-deps 6.2.2", + "system-deps", +] + +[[package]] +name = "camino" +version = "1.1.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b96ec4966b5813e2c0507c1f86115c8c5abaadc3980879c3424042a02fd1ad3" +dependencies = [ + "serde", +] + +[[package]] +name = "cargo-platform" +version = "0.1.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e35af189006b9c0f00a064685c727031e3ed2d8020f7ba284d78cc2671bd36ea" +dependencies = [ + "serde", +] + +[[package]] +name = "cargo_metadata" +version = "0.18.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2d886547e41f740c616ae73108f6eb70afe6d940c7bc697cb30f13daec073037" +dependencies = [ + "camino", + "cargo-platform", + "semver", + "serde", + "serde_json", + "thiserror 1.0.69", ] [[package]] name = "cargo_toml" -version = "0.15.3" +version = "0.17.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "599aa35200ffff8f04c1925aa1acc92fa2e08874379ef42e210a80e527e60838" +checksum = "8a969e13a7589e9e3e4207e153bae624ade2b5622fb4684a4923b23ec3d57719" dependencies = [ "serde", - "toml 0.7.8", + "toml 0.8.19", ] [[package]] name = "cc" -version = "1.1.35" +version = "1.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0f57c4b4da2a9d619dd035f27316d7a426305b75be93d09e92f2b9229c34feaf" +checksum = "f34d93e62b03caf570cccc334cbc6c2fceca82f39211051345108adcba3eebdc" dependencies = [ "jobserver", "libc", @@ -771,15 +857,6 @@ dependencies = [ "uuid", ] -[[package]] -name = "cfg-expr" -version = "0.9.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3431df59f28accaf4cb4eed4a9acc66bea3f3c3753aa6cdc2f024174ef232af7" -dependencies = [ - "smallvec", -] - [[package]] name = "cfg-expr" version = "0.15.8" @@ -901,9 +978,9 @@ dependencies = [ [[package]] name = "clap" -version = "4.5.20" +version = "4.5.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b97f376d85a664d5837dbae44bf546e6477a679ff6610010f17276f686d867e8" +checksum = "fb3b4b9e5a7c7514dfa52869339ee98b3156b0bfb4e8a77c4ff4babb64b1604f" dependencies = [ "clap_builder", "clap_derive", @@ -911,9 +988,9 @@ dependencies = [ [[package]] name = "clap_builder" -version = "4.5.20" +version = "4.5.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "19bc80abd44e4bed93ca373a0704ccbd1b710dc5749406201bb018272808dc54" +checksum = "b17a95aa67cc7b5ebd32aa5370189aa0d79069ef1c64ce893bd30fb24bff20ec" dependencies = [ "anstream", "anstyle", @@ -923,11 +1000,11 @@ dependencies = [ [[package]] name = "clap_complete" -version = "4.5.37" +version = "4.5.38" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "11611dca53440593f38e6b25ec629de50b14cdfa63adc0fb856115a2c6d97595" +checksum = "d9647a559c112175f17cf724dc72d3645680a883c58481332779192b0d8e7a01" dependencies = [ - "clap 4.5.20", + "clap 4.5.21", ] [[package]] @@ -939,14 +1016,14 @@ dependencies = [ "heck 0.5.0", "proc-macro2", "quote", - "syn 2.0.87", + "syn 2.0.89", ] [[package]] name = "clap_lex" -version = "0.7.2" +version = "0.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1462739cb27611015575c0c11df5df7601141071f07518d56fcc1be504cbec97" +checksum = "afb84c814227b90d6895e01398aee0d8033c00e7466aca416fb6a8e0eb19d8a7" [[package]] name = "clap_mangen" @@ -954,46 +1031,40 @@ version = "0.2.24" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fbae9cbfdc5d4fa8711c09bd7b83f644cb48281ac35bf97af3e47b0675864bdf" dependencies = [ - "clap 4.5.20", + "clap 4.5.21", "roff", ] [[package]] name = "cocoa" -version = "0.24.1" +version = "0.26.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f425db7937052c684daec3bd6375c8abe2d146dca4b8b143d6db777c39138f3a" +checksum = "f79398230a6e2c08f5c9760610eb6924b52aa9e7950a619602baba59dcbbdbb2" dependencies = [ - "bitflags 1.3.2", + "bitflags 2.6.0", "block", "cocoa-foundation", - "core-foundation 0.9.4", + "core-foundation 0.10.0", "core-graphics", - "foreign-types", + "foreign-types 0.5.0", "libc", "objc", ] [[package]] name = "cocoa-foundation" -version = "0.1.2" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8c6234cbb2e4c785b456c0644748b1ac416dd045799740356f8363dfe00c93f7" +checksum = "e14045fb83be07b5acf1c0884b2180461635b433455fa35d1cd6f17f1450679d" dependencies = [ - "bitflags 1.3.2", + "bitflags 2.6.0", "block", - "core-foundation 0.9.4", + "core-foundation 0.10.0", "core-graphics-types", "libc", "objc", ] -[[package]] -name = "color_quant" -version = "1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3d7b894f5411737b7867f4827955924d7c254fc9f4d91a6aad6b097804b1018b" - [[package]] name = "colorchoice" version = "1.0.3" @@ -1006,7 +1077,7 @@ version = "4.6.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ba5a308b75df32fe02788e748662718f03fde005016435c444eea572398219fd" dependencies = [ - "bytes 1.8.0", + "bytes 1.9.0", "memchr", ] @@ -1043,6 +1114,16 @@ version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6245d59a3e82a7fc217c5828a6692dbc6dfb63a0c8c90495621f7b9d79704a0e" +[[package]] +name = "cookie" +version = "0.18.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4ddef33a339a91ea89fb53151bd0a4689cfce27055c291dfa69945475d22c747" +dependencies = [ + "time", + "version_check", +] + [[package]] name = "core-foundation" version = "0.9.4" @@ -1071,25 +1152,25 @@ checksum = "773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b" [[package]] name = "core-graphics" -version = "0.22.3" +version = "0.24.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2581bbab3b8ffc6fcbd550bf46c355135d16e9ff2a6ea032ad6b9bf1d7efe4fb" +checksum = "fa95a34622365fa5bbf40b20b75dba8dfa8c94c734aea8ac9a5ca38af14316f1" dependencies = [ - "bitflags 1.3.2", - "core-foundation 0.9.4", + "bitflags 2.6.0", + "core-foundation 0.10.0", "core-graphics-types", - "foreign-types", + "foreign-types 0.5.0", "libc", ] [[package]] name = "core-graphics-types" -version = "0.1.3" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "45390e6114f68f718cc7a830514a96f903cccd70d02a8f6d9f643ac4ba45afaf" +checksum = "3d44a101f213f6c4cdc1853d4b78aef6db6bdfa3468798cc1d9912f4735013eb" dependencies = [ - "bitflags 1.3.2", - "core-foundation 0.9.4", + "bitflags 2.6.0", + "core-foundation 0.10.0", "libc", ] @@ -1104,9 +1185,9 @@ dependencies = [ [[package]] name = "cpufeatures" -version = "0.2.14" +version = "0.2.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "608697df725056feaccfa42cffdaeeec3fccc4ffc38358ecd19b243e716a78e0" +checksum = "16b80225097f2e5ae4e7179dd2266824648f3e2f49d9134d584b76389d31c4c3" dependencies = [ "libc", ] @@ -1249,17 +1330,17 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "13b588ba4ac1a99f7f2964d24b3d896ddc6bf847ee3855dbd4366f058cfcd331" dependencies = [ "quote", - "syn 2.0.87", + "syn 2.0.89", ] [[package]] name = "ctor" -version = "0.2.8" +version = "0.2.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "edb49164822f3ee45b17acd4a208cfc1251410cf0cad9a833234c9890774dd9f" +checksum = "32a2785755761f3ddc1492979ce1e48d2c00d09311c39e4466429188f3dd6501" dependencies = [ "quote", - "syn 2.0.87", + "syn 2.0.89", ] [[package]] @@ -1297,7 +1378,7 @@ checksum = "f46882e17999c6cc590af592290432be3bce0428cb0d5f8b6715e4dc7b383eb3" dependencies = [ "proc-macro2", "quote", - "syn 2.0.87", + "syn 2.0.89", ] [[package]] @@ -1321,7 +1402,7 @@ dependencies = [ "proc-macro2", "quote", "strsim", - "syn 2.0.87", + "syn 2.0.89", ] [[package]] @@ -1332,7 +1413,7 @@ checksum = "d336a2a514f6ccccaa3e09b02d41d35330c07ddf03a62165fcec10bb561c7806" dependencies = [ "darling_core", "quote", - "syn 2.0.87", + "syn 2.0.89", ] [[package]] @@ -1389,13 +1470,13 @@ dependencies = [ [[package]] name = "derive_arbitrary" -version = "1.4.0" +version = "1.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d475dfebcb4854d596b17b09f477616f80f17a550517f2b3615d8c205d5c802b" +checksum = "30542c1ad912e0e3d22a1935c290e12e8a29d704a420177a31faad4a601a0800" dependencies = [ "proc-macro2", "quote", - "syn 2.0.87", + "syn 2.0.89", ] [[package]] @@ -1408,7 +1489,7 @@ dependencies = [ "proc-macro2", "quote", "rustc_version", - "syn 2.0.87", + "syn 2.0.89", ] [[package]] @@ -1434,9 +1515,9 @@ dependencies = [ [[package]] name = "diesel" -version = "2.2.4" +version = "2.2.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "158fe8e2e68695bd615d7e4f3227c0727b151330d3e253b525086c348d055d5e" +checksum = "cbf9649c05e0a9dbd6d0b0b8301db5182b972d0fd02f0a7c6736cf632d7c0fd5" dependencies = [ "bigdecimal", "chrono", @@ -1460,7 +1541,7 @@ dependencies = [ "dsl_auto_type", "proc-macro2", "quote", - "syn 2.0.87", + "syn 2.0.89", ] [[package]] @@ -1480,7 +1561,7 @@ version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "209c735641a413bc68c4923a9d6ad4bcb3ca306b794edaa7eb0b3228a99ffb25" dependencies = [ - "syn 2.0.87", + "syn 2.0.89", ] [[package]] @@ -1500,24 +1581,23 @@ version = "4.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ca3aa72a6f96ea37bbc5aa912f6788242832f75369bdfdadcb0e38423f100059" dependencies = [ - "dirs-sys", + "dirs-sys 0.3.7", ] [[package]] -name = "dirs-next" -version = "1.0.2" +name = "dirs" +version = "5.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cf36e65a80337bea855cd4ef9b8401ffce06a7baedf2e85ec467b1ac3f6e82b6" +checksum = "44c45a9d03d6676652bcb5e724c7e988de1acad23a711b5217ab9cbecbec2225" dependencies = [ - "cfg-if", - "dirs-sys-next", + "dirs-sys 0.4.1", ] [[package]] name = "dirs-next" -version = "2.0.0" +version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b98cf8ebf19c3d1b223e151f99a4f9f0690dca41414773390fc824184ac833e1" +checksum = "cf36e65a80337bea855cd4ef9b8401ffce06a7baedf2e85ec467b1ac3f6e82b6" dependencies = [ "cfg-if", "dirs-sys-next", @@ -1534,6 +1614,18 @@ dependencies = [ "winapi", ] +[[package]] +name = "dirs-sys" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "520f05a5cbd335fae5a99ff7a6ab8627577660ee5cfd6a94a6a929b52ff0321c" +dependencies = [ + "libc", + "option-ext", + "redox_users", + "windows-sys 0.48.0", +] + [[package]] name = "dirs-sys-next" version = "0.1.2" @@ -1559,7 +1651,30 @@ checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0" dependencies = [ "proc-macro2", "quote", - "syn 2.0.87", + "syn 2.0.89", +] + +[[package]] +name = "dlopen2" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9e1297103d2bbaea85724fcee6294c2d50b1081f9ad47d0f6f6f61eda65315a6" +dependencies = [ + "dlopen2_derive", + "libc", + "once_cell", + "winapi", +] + +[[package]] +name = "dlopen2_derive" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f2b99bf03862d7f545ebc28ddd33a665b50865f4dfd84031a393823879bd4c54" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.89", ] [[package]] @@ -1568,6 +1683,15 @@ version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fea41bba32d969b513997752735605054bc0dfa92b4c56bf1189f2e174be7a10" +[[package]] +name = "dpi" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f25c0e292a7ca6d6498557ff1df68f32c99850012b6ea401cf8daf771f22ff53" +dependencies = [ + "serde", +] + [[package]] name = "dsl_auto_type" version = "0.1.2" @@ -1579,7 +1703,7 @@ dependencies = [ "heck 0.5.0", "proc-macro2", "quote", - "syn 2.0.87", + "syn 2.0.89", ] [[package]] @@ -1617,9 +1741,9 @@ checksum = "60b1af1c220855b6ceac025d3f6ecdd2b7c4894bfe9cd9bda4fbb4bc7c0d4cf0" [[package]] name = "embed-resource" -version = "2.5.0" +version = "2.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f4e24052d7be71f0efb50c201557f6fe7d237cfd5a64fd5bcd7fd8fe32dbbffa" +checksum = "b68b6f9f63a0b6a38bc447d4ce84e2b388f3ec95c99c641c8ff0dd3ef89a6379" dependencies = [ "cc", "memchr", @@ -1644,6 +1768,12 @@ dependencies = [ "cfg-if", ] +[[package]] +name = "endi" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a3d8a32ae18130a3c84dd492d4215c3d913c3b07c6b63c2eb3eb7ff1101ab7bf" + [[package]] name = "endian-type" version = "0.1.2" @@ -1659,7 +1789,7 @@ dependencies = [ "heck 0.5.0", "proc-macro2", "quote", - "syn 2.0.87", + "syn 2.0.89", ] [[package]] @@ -1680,7 +1810,7 @@ checksum = "de0d48a183585823424a4ce1aa132d174a6a81bd540895822eb4c8373a8e49e8" dependencies = [ "proc-macro2", "quote", - "syn 2.0.87", + "syn 2.0.89", ] [[package]] @@ -1689,36 +1819,52 @@ version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5" +[[package]] +name = "erased-serde" +version = "0.4.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "24e2389d65ab4fab27dc2a5de7b191e1f6617d1f1c8855c0dc569c94a4cbb18d" +dependencies = [ + "serde", + "typeid", +] + [[package]] name = "errno" -version = "0.3.9" +version = "0.3.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "534c5cf6194dfab3db3242765c03bbe257cf92f22b38f6bc0c58d59108a820ba" +checksum = "33d852cb9b869c2a9b3df2f71a3074817f01e1844f839a144f5fcef059a4eb5d" dependencies = [ "libc", - "windows-sys 0.52.0", + "windows-sys 0.59.0", ] [[package]] name = "event-listener" -version = "2.5.3" +version = "5.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0206175f82b8d6bf6652ff7d71a1e27fd2e4efde587fd368662814d6ec1d9ce0" +checksum = "6032be9bd27023a771701cc49f9f053c751055f71efb2e0ae5c15809093675ba" +dependencies = [ + "concurrent-queue", + "parking", + "pin-project-lite", +] [[package]] -name = "fastrand" -version = "1.9.0" +name = "event-listener-strategy" +version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e51093e27b0797c359783294ca4f0a911c270184cb10f85783b118614a1501be" +checksum = "0f214dc438f977e6d4e3500aaa277f5ad94ca83fbbd9b1a15713ce2344ccc5a1" dependencies = [ - "instant", + "event-listener", + "pin-project-lite", ] [[package]] name = "fastrand" -version = "2.1.1" +version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e8c02a5121d4ea3eb16a80748c74f5549a5665e4c21333c6098f283870fbdea6" +checksum = "486f806e73c5707928240ddc295403b1b93c96a02038563881c4a2fd84b81ac4" [[package]] name = "fdeflate" @@ -1751,7 +1897,7 @@ version = "0.3.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "38e2275cc4e4fc009b0669731a1e5ab7ebf11f469eaede2bab9309a5b4d6057f" dependencies = [ - "memoffset 0.9.1", + "memoffset", "rustc_version", ] @@ -1786,7 +1932,7 @@ source = "git+https://github.com/tauri-apps/fix-path-env-rs#0e479e2804edc1a7e5f1 dependencies = [ "home", "strip-ansi-escapes", - "thiserror", + "thiserror 1.0.69", ] [[package]] @@ -1809,23 +1955,14 @@ checksum = "0ce7134b9999ecaf8bcd65542e436736ef32ddca1b3e06094cb6ec5755203b80" [[package]] name = "flate2" -version = "1.0.34" +version = "1.0.35" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a1b589b4dc103969ad3cf85c950899926ec64300a1a46d76c03a6072957036f0" +checksum = "c936bfdafb507ebbf50b8074c54fa31c5be9a1e7e5f467dd659697041407d07c" dependencies = [ "crc32fast", "miniz_oxide", ] -[[package]] -name = "fluent-uri" -version = "0.1.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "17c704e9dbe1ddd863da1e6ff3567795087b1eb201ce80d8fa81162e1516500d" -dependencies = [ - "bitflags 1.3.2", -] - [[package]] name = "fnv" version = "1.0.7" @@ -1838,27 +1975,54 @@ version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f6f339eb8adc052cd2ca78910fda869aefa38d22d5cb648e6485e4d3fc06f3b1" dependencies = [ - "foreign-types-shared", + "foreign-types-shared 0.1.1", ] [[package]] -name = "foreign-types-shared" -version = "0.1.1" +name = "foreign-types" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b" +checksum = "d737d9aa519fb7b749cbc3b962edcf310a8dd1f4b67c91c4f83975dbdd17d965" +dependencies = [ + "foreign-types-macros", + "foreign-types-shared 0.3.1", +] [[package]] -name = "form_urlencoded" -version = "1.2.1" +name = "foreign-types-macros" +version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e13624c2627564efccf4934284bdd98cbaa14e79b0b5a141218e507b3a823456" +checksum = "1a5c6c585bc94aaf2c7b51dd4c2ba22680844aba4c687be581871a6f518c5742" dependencies = [ - "percent-encoding", + "proc-macro2", + "quote", + "syn 2.0.89", ] [[package]] -name = "fs2" -version = "0.4.3" +name = "foreign-types-shared" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b" + +[[package]] +name = "foreign-types-shared" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aa9a19cbb55df58761df49b23516a86d432839add4af60fc256da840f66ed35b" + +[[package]] +name = "form_urlencoded" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e13624c2627564efccf4934284bdd98cbaa14e79b0b5a141218e507b3a823456" +dependencies = [ + "percent-encoding", +] + +[[package]] +name = "fs2" +version = "0.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9564fc758e15025b46aa6643b1b77d047d1a56a1aea6e01002ac0c7026876213" dependencies = [ @@ -1938,26 +2102,11 @@ checksum = "9e5c1b78ca4aae1ac06c48a526a655760685149f0d465d21f37abfe57ce075c6" [[package]] name = "futures-lite" -version = "1.13.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "49a9d51ce47660b1e808d3c990b4709f2f415d928835a17dfd16991515c46bce" -dependencies = [ - "fastrand 1.9.0", - "futures-core", - "futures-io", - "memchr", - "parking", - "pin-project-lite", - "waker-fn", -] - -[[package]] -name = "futures-lite" -version = "2.4.0" +version = "2.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3f1fa2f9765705486b33fd2acf1577f8ec449c2ba1f318ae5447697b7c08d210" +checksum = "cef40d21ae2c515b51041df9ed313ed21e572df340ea58a922a0aefe7e8891a1" dependencies = [ - "fastrand 2.1.1", + "fastrand", "futures-core", "futures-io", "parking", @@ -1972,7 +2121,7 @@ checksum = "162ee34ebcb7c64a8abebc059ce0fee27c2262618d7b60ed8faf72fef13c3650" dependencies = [ "proc-macro2", "quote", - "syn 2.0.87", + "syn 2.0.89", ] [[package]] @@ -2023,11 +2172,10 @@ checksum = "8f5f3913fa0bfe7ee1fd8248b6b9f42a5af4b9d65ec2dd2c3c26132b950ecfc2" [[package]] name = "gdk" -version = "0.15.4" +version = "0.18.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a6e05c1f572ab0e1f15be94217f0dc29088c248b14f792a5ff0af0d84bcda9e8" +checksum = "f5ba081bdef3b75ebcdbfc953699ed2d7417d6bd853347a42a37d76406a33646" dependencies = [ - "bitflags 1.3.2", "cairo-rs", "gdk-pixbuf", "gdk-sys", @@ -2039,35 +2187,35 @@ dependencies = [ [[package]] name = "gdk-pixbuf" -version = "0.15.11" +version = "0.18.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ad38dd9cc8b099cceecdf41375bb6d481b1b5a7cd5cd603e10a69a9383f8619a" +checksum = "50e1f5f1b0bfb830d6ccc8066d18db35c487b1b2b1e8589b5dfe9f07e8defaec" dependencies = [ - "bitflags 1.3.2", "gdk-pixbuf-sys", "gio", "glib", "libc", + "once_cell", ] [[package]] name = "gdk-pixbuf-sys" -version = "0.15.10" +version = "0.18.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "140b2f5378256527150350a8346dbdb08fadc13453a7a2d73aecd5fab3c402a7" +checksum = "3f9839ea644ed9c97a34d129ad56d38a25e6756f99f3a88e15cd39c20629caf7" dependencies = [ "gio-sys", "glib-sys", "gobject-sys", "libc", - "system-deps 6.2.2", + "system-deps", ] [[package]] name = "gdk-sys" -version = "0.15.1" +version = "0.18.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "32e7a08c1e8f06f4177fb7e51a777b8c1689f743a7bc11ea91d44d2226073a88" +checksum = "31ff856cb3386dae1703a920f803abafcc580e9b5f711ca62ed1620c25b51ff2" dependencies = [ "cairo-sys-rs", "gdk-pixbuf-sys", @@ -2077,47 +2225,48 @@ dependencies = [ "libc", "pango-sys", "pkg-config", - "system-deps 6.2.2", + "system-deps", ] [[package]] name = "gdkwayland-sys" -version = "0.15.3" +version = "0.18.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cca49a59ad8cfdf36ef7330fe7bdfbe1d34323220cc16a0de2679ee773aee2c2" +checksum = "a90fbf5c033c65d93792192a49a8efb5bb1e640c419682a58bb96f5ae77f3d4a" dependencies = [ "gdk-sys", "glib-sys", "gobject-sys", "libc", "pkg-config", - "system-deps 6.2.2", + "system-deps", ] [[package]] -name = "gdkx11-sys" -version = "0.15.1" +name = "gdkx11" +version = "0.18.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b4b7f8c7a84b407aa9b143877e267e848ff34106578b64d1e0a24bf550716178" +checksum = "db2ea8a4909d530f79921290389cbd7c34cb9d623bfe970eaae65ca5f9cd9cce" dependencies = [ - "gdk-sys", - "glib-sys", + "gdk", + "gdkx11-sys", + "gio", + "glib", "libc", - "system-deps 6.2.2", "x11", ] [[package]] -name = "generator" -version = "0.7.5" +name = "gdkx11-sys" +version = "0.18.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5cc16584ff22b460a382b7feec54b23d2908d858152e5739a120b949293bd74e" +checksum = "fee8f00f4ee46cad2939b8990f5c70c94ff882c3028f3cc5abf950fa4ab53043" dependencies = [ - "cc", + "gdk-sys", + "glib-sys", "libc", - "log", - "rustversion", - "windows 0.48.0", + "system-deps", + "x11", ] [[package]] @@ -2130,6 +2279,16 @@ dependencies = [ "version_check", ] +[[package]] +name = "gethostname" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc3655aa6818d65bc620d6911f05aa7b6aeb596291e1e9f79e52df85583d1e30" +dependencies = [ + "rustix", + "windows-targets 0.52.6", +] + [[package]] name = "getrandom" version = "0.1.16" @@ -2172,77 +2331,81 @@ checksum = "07e28edb80900c19c28f1072f2e8aeca7fa06b23cd4169cefe1af5aa3260783f" [[package]] name = "gio" -version = "0.15.12" +version = "0.18.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "68fdbc90312d462781a395f7a16d96a2b379bb6ef8cd6310a2df272771c4283b" +checksum = "d4fc8f532f87b79cbc51a79748f16a6828fb784be93145a322fa14d06d354c73" dependencies = [ - "bitflags 1.3.2", "futures-channel", "futures-core", "futures-io", + "futures-util", "gio-sys", "glib", "libc", "once_cell", - "thiserror", + "pin-project-lite", + "smallvec", + "thiserror 1.0.69", ] [[package]] name = "gio-sys" -version = "0.15.10" +version = "0.18.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "32157a475271e2c4a023382e9cab31c4584ee30a97da41d3c4e9fdd605abcf8d" +checksum = "37566df850baf5e4cb0dfb78af2e4b9898d817ed9263d1090a2df958c64737d2" dependencies = [ "glib-sys", "gobject-sys", "libc", - "system-deps 6.2.2", + "system-deps", "winapi", ] [[package]] name = "glib" -version = "0.15.12" +version = "0.18.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "edb0306fbad0ab5428b0ca674a23893db909a98582969c9b537be4ced78c505d" +checksum = "233daaf6e83ae6a12a52055f568f9d7cf4671dabb78ff9560ab6da230ce00ee5" dependencies = [ - "bitflags 1.3.2", + "bitflags 2.6.0", "futures-channel", "futures-core", "futures-executor", "futures-task", + "futures-util", + "gio-sys", "glib-macros", "glib-sys", "gobject-sys", "libc", + "memchr", "once_cell", "smallvec", - "thiserror", + "thiserror 1.0.69", ] [[package]] name = "glib-macros" -version = "0.15.13" +version = "0.18.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "10c6ae9f6fa26f4fb2ac16b528d138d971ead56141de489f8111e259b9df3c4a" +checksum = "0bb0228f477c0900c880fd78c8759b95c7636dbd7842707f49e132378aa2acdc" dependencies = [ - "anyhow", "heck 0.4.1", - "proc-macro-crate 1.1.3", + "proc-macro-crate 2.0.0", "proc-macro-error", "proc-macro2", "quote", - "syn 1.0.109", + "syn 2.0.89", ] [[package]] name = "glib-sys" -version = "0.15.10" +version = "0.18.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ef4b192f8e65e9cf76cbf4ea71fa8e3be4a0e18ffe3d68b8da6836974cc5bad4" +checksum = "063ce2eb6a8d0ea93d2bf8ba1957e78dbab6be1c2220dd3daca57d5a9d869898" dependencies = [ "libc", - "system-deps 6.2.2", + "system-deps", ] [[package]] @@ -2251,28 +2414,15 @@ version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d2fabcfbdc87f4758337ca535fb41a6d701b65693ce38287d856d1674551ec9b" -[[package]] -name = "globset" -version = "0.4.15" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "15f1ce686646e7f1e19bf7d5533fe443a45dbfb990e00629110797578b42fb19" -dependencies = [ - "aho-corasick", - "bstr", - "log", - "regex-automata 0.4.8", - "regex-syntax 0.8.5", -] - [[package]] name = "gobject-sys" -version = "0.15.10" +version = "0.18.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0d57ce44246becd17153bd035ab4d32cfee096a657fc01f2231c9278378d1e0a" +checksum = "0850127b514d1c4a4654ead6dedadb18198999985908e6ffe4436f53c785ce44" dependencies = [ "glib-sys", "libc", - "system-deps 6.2.2", + "system-deps", ] [[package]] @@ -2299,12 +2449,11 @@ dependencies = [ [[package]] name = "gtk" -version = "0.15.5" +version = "0.18.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "92e3004a2d5d6d8b5057d2b57b3712c9529b62e82c77f25c1fecde1fd5c23bd0" +checksum = "93c4f5e0e20b60e10631a5f06da7fe3dda744b05ad0ea71fee2f47adf865890c" dependencies = [ "atk", - "bitflags 1.3.2", "cairo-rs", "field-offset", "futures-channel", @@ -2315,16 +2464,15 @@ dependencies = [ "gtk-sys", "gtk3-macros", "libc", - "once_cell", "pango", "pkg-config", ] [[package]] name = "gtk-sys" -version = "0.15.3" +version = "0.18.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d5bc2f0587cba247f60246a0ca11fe25fb733eabc3de12d1965fc07efab87c84" +checksum = "771437bf1de2c1c0b496c11505bdf748e26066bbe942dfc8f614c9460f6d7722" dependencies = [ "atk-sys", "cairo-sys-rs", @@ -2335,54 +2483,34 @@ dependencies = [ "gobject-sys", "libc", "pango-sys", - "system-deps 6.2.2", + "system-deps", ] [[package]] name = "gtk3-macros" -version = "0.15.6" +version = "0.18.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "684c0456c086e8e7e9af73ec5b84e35938df394712054550e81558d21c44ab0d" +checksum = "c6063efb63db582968fb7df72e1ae68aa6360dcfb0a75143f34fc7d616bad75e" dependencies = [ - "anyhow", "proc-macro-crate 1.1.3", "proc-macro-error", "proc-macro2", "quote", - "syn 1.0.109", + "syn 2.0.89", ] [[package]] name = "h2" -version = "0.3.26" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "81fe527a889e1532da5c525686d96d4c2e74cdd345badf8dfef9f6b39dd5f5e8" -dependencies = [ - "bytes 1.8.0", - "fnv", - "futures-core", - "futures-sink", - "futures-util", - "http 0.2.12", - "indexmap 2.6.0", - "slab", - "tokio", - "tokio-util 0.7.12", - "tracing", -] - -[[package]] -name = "h2" -version = "0.4.6" +version = "0.4.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "524e8ac6999421f49a846c2d4411f337e53497d8ec55d67753beffa43c5d9205" +checksum = "ccae279728d634d083c00f6099cb58f01cc99c145b84b8be2f6c74618d79922e" dependencies = [ "atomic-waker", - "bytes 1.8.0", + "bytes 1.9.0", "fnv", "futures-core", "futures-sink", - "http 1.1.0", + "http", "indexmap 2.6.0", "slab", "tokio", @@ -2404,9 +2532,9 @@ checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" [[package]] name = "hashbrown" -version = "0.15.1" +version = "0.15.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3a9bfc1af68b1726ea47d3d5109de126281def866b33970e10fbab11b5dafab3" +checksum = "bf151400ff0baff5465007dd2f3e717f3fe502074ca563069ce3a6629d07b289" [[package]] name = "hdrhistogram" @@ -2477,7 +2605,7 @@ dependencies = [ "once_cell", "radix_trie", "rand 0.8.5", - "thiserror", + "thiserror 1.0.69", "tokio", "tracing", ] @@ -2488,7 +2616,7 @@ version = "0.25.0-alpha.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8270a1857fb962b9914aafd46a89a187a4e63d0eb4190c327e7c7b8256a2d055" dependencies = [ - "async-recursion 1.1.1", + "async-recursion", "async-trait", "bitflags 2.6.0", "cfg-if", @@ -2500,11 +2628,12 @@ dependencies = [ "idna 0.5.0", "ipnet", "once_cell", + "openssl", "rand 0.8.5", "ring", "rustls", - "rustls-pemfile 2.2.0", - "thiserror", + "rustls-pemfile", + "thiserror 1.0.69", "time", "tinyvec", "tokio", @@ -2529,7 +2658,7 @@ dependencies = [ "rand 0.8.5", "resolv-conf", "smallvec", - "thiserror", + "thiserror 1.0.69", "tokio", "tracing", ] @@ -2588,37 +2717,15 @@ dependencies = [ "syn 1.0.109", ] -[[package]] -name = "http" -version = "0.2.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "601cbb57e577e2f5ef5be8e7b83f0f63994f25aa94d673e54a92d5c516d101f1" -dependencies = [ - "bytes 1.8.0", - "fnv", - "itoa 1.0.11", -] - [[package]] name = "http" version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "21b9ddb458710bc376481b842f5da65cdf31522de232c1ca8146abce2a358258" dependencies = [ - "bytes 1.8.0", + "bytes 1.9.0", "fnv", - "itoa 1.0.11", -] - -[[package]] -name = "http-body" -version = "0.4.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7ceab25649e9960c0311ea418d17bee82c0dcec1bd053b5f9a66e265a693bed2" -dependencies = [ - "bytes 1.8.0", - "http 0.2.12", - "pin-project-lite", + "itoa 1.0.14", ] [[package]] @@ -2627,8 +2734,8 @@ version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1efedce1fb8e6913f23e0c92de8e62cd5b772a67e7b3946df930a62566c93184" dependencies = [ - "bytes 1.8.0", - "http 1.1.0", + "bytes 1.9.0", + "http", ] [[package]] @@ -2637,19 +2744,13 @@ version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "793429d76616a256bcb62c2a2ec2bed781c8307e797e2598c50010f2bee2544f" dependencies = [ - "bytes 1.8.0", + "bytes 1.9.0", "futures-util", - "http 1.1.0", - "http-body 1.0.1", + "http", + "http-body", "pin-project-lite", ] -[[package]] -name = "http-range" -version = "0.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "21dec9db110f5f872ed9699c3ecf50cf16f423502706ba5c72462e28d3157573" - [[package]] name = "httparse" version = "1.9.5" @@ -2662,12 +2763,6 @@ version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "df3b46402a9d5adb4c86a0cf463f42e19994e3ee891101b1841f30a545cb49a9" -[[package]] -name = "human_format" -version = "1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c3b1f728c459d27b12448862017b96ad4767b1ec2ec5e6434e99f1577f085b8" - [[package]] name = "humantime" version = "2.1.0" @@ -2676,43 +2771,19 @@ checksum = "9a3a5bfb195931eeb336b2a7b4d761daec841b97f947d34394601737a7bba5e4" [[package]] name = "hyper" -version = "0.14.31" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8c08302e8fa335b151b788c775ff56e7a03ae64ff85c548ee820fecb70356e85" -dependencies = [ - "bytes 1.8.0", - "futures-channel", - "futures-core", - "futures-util", - "h2 0.3.26", - "http 0.2.12", - "http-body 0.4.6", - "httparse", - "httpdate", - "itoa 1.0.11", - "pin-project-lite", - "socket2 0.5.7", - "tokio", - "tower-service", - "tracing", - "want", -] - -[[package]] -name = "hyper" -version = "1.5.0" +version = "1.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bbbff0a806a4728c99295b254c8838933b5b082d75e3cb70c8dab21fdfbcfa9a" +checksum = "97818827ef4f364230e16705d4706e2897df2bb60617d6ca15d598025a3c481f" dependencies = [ - "bytes 1.8.0", + "bytes 1.9.0", "futures-channel", "futures-util", - "h2 0.4.6", - "http 1.1.0", - "http-body 1.0.1", + "h2", + "http", + "http-body", "httparse", "httpdate", - "itoa 1.0.11", + "itoa 1.0.14", "pin-project-lite", "smallvec", "tokio", @@ -2726,14 +2797,15 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "08afdbb5c31130e3034af566421053ab03787c640246a446327f550d11bcb333" dependencies = [ "futures-util", - "http 1.1.0", - "hyper 1.5.0", + "http", + "hyper", "hyper-util", "rustls", "rustls-pki-types", "tokio", "tokio-rustls", "tower-service", + "webpki-roots", ] [[package]] @@ -2742,35 +2814,22 @@ version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2b90d566bffbce6a75bd8b09a05aa8c2cb1fabb6cb348f8840c9e4c90a0d83b0" dependencies = [ - "hyper 1.5.0", + "hyper", "hyper-util", "pin-project-lite", "tokio", "tower-service", ] -[[package]] -name = "hyper-tls" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d6183ddfa99b85da61a140bea0efc93fdf56ceaa041b37d553518030827f9905" -dependencies = [ - "bytes 1.8.0", - "hyper 0.14.31", - "native-tls", - "tokio", - "tokio-native-tls", -] - [[package]] name = "hyper-tls" version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "70206fc6890eaca9fde8a0bf71caa2ddfc9fe045ac9e5c70df101a7dbde866e0" dependencies = [ - "bytes 1.8.0", + "bytes 1.9.0", "http-body-util", - "hyper 1.5.0", + "hyper", "hyper-util", "native-tls", "tokio", @@ -2784,14 +2843,14 @@ version = "0.1.10" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "df2dcfbe0677734ab2f3ffa7fa7bfd4706bfdc1ef393f2ee30184aed67e631b4" dependencies = [ - "bytes 1.8.0", + "bytes 1.9.0", "futures-channel", "futures-util", - "http 1.1.0", - "http-body 1.0.1", - "hyper 1.5.0", + "http", + "http-body", + "hyper", "pin-project-lite", - "socket2 0.5.7", + "socket2", "tokio", "tower-service", "tracing", @@ -2945,7 +3004,7 @@ checksum = "1ec89e9337638ecdc08744df490b221a7399bf8d164eb52a665454e60e075ad6" dependencies = [ "proc-macro2", "quote", - "syn 2.0.87", + "syn 2.0.89", ] [[package]] @@ -2985,32 +3044,16 @@ dependencies = [ "icu_properties", ] -[[package]] -name = "ignore" -version = "0.4.23" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6d89fd380afde86567dfba715db065673989d6253f42b88179abd3eae47bda4b" -dependencies = [ - "crossbeam-deque", - "globset", - "log", - "memchr", - "regex-automata 0.4.8", - "same-file", - "walkdir", - "winapi-util", -] - [[package]] name = "image" -version = "0.24.9" +version = "0.25.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5690139d2f55868e080017335e4b94cb7414274c74f1669c84fb5feba2c9f69d" +checksum = "cd6f44aed642f18953a158afeb30206f4d50da59fbc66ecb53c66488de73563b" dependencies = [ "bytemuck", - "byteorder", - "color_quant", + "byteorder-lite", "num-traits", + "png", ] [[package]] @@ -3033,13 +3076,13 @@ dependencies = [ [[package]] name = "impl-trait-for-tuples" -version = "0.2.2" +version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "11d7a9f6330b71fea57921c9b61c47ee6e84f72d394754eff6163ae67e7395eb" +checksum = "a0eb5a3343abf848c0984fe4604b2b105da9539376e24fc0a3b0007411ae4fd9" dependencies = [ "proc-macro2", "quote", - "syn 1.0.109", + "syn 2.0.89", ] [[package]] @@ -3079,15 +3122,15 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "707907fe3c25f5424cce2cb7e1cbcafee6bdbe735ca90ef77c29e84591e5b9da" dependencies = [ "equivalent", - "hashbrown 0.15.1", + "hashbrown 0.15.2", "serde", ] [[package]] name = "infer" -version = "0.13.0" +version = "0.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f551f8c3a39f68f986517db0d1759de85881894fdc7db798bd2a9df9cb04b7fc" +checksum = "bc150e5ce2330295b8616ce0e3f53250e53af31759a9dbedad1621ba29151847" dependencies = [ "cfb", ] @@ -3116,24 +3159,13 @@ version = "3.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8bb03732005da905c88227371639bf1ad885cc712789c011c31c5fb3ab3ccf02" -[[package]] -name = "io-lifetimes" -version = "1.0.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eae7b9aee968036d54dce06cebaefd919e4472e753296daccd6d344e3e2df0c2" -dependencies = [ - "hermit-abi 0.3.9", - "libc", - "windows-sys 0.48.0", -] - [[package]] name = "ipconfig" version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b58db92f96b720de98181bbbe63c831e87005ab460c1bf306eb2622b4707997f" dependencies = [ - "socket2 0.5.7", + "socket2", "widestring", "windows-sys 0.48.0", "winreg 0.50.0", @@ -3205,15 +3237,15 @@ checksum = "b71991ff56294aa922b450139ee08b3bfc70982c6b2c7562771375cf73542dd4" [[package]] name = "itoa" -version = "1.0.11" +version = "1.0.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "49f1f14873335454500d59611f1cf4a4b0f786f9ac11f4312a78e4cf2566695b" +checksum = "d75a2a4b1b190afb6f5425f10f6a8f959d2ea0b9c2b1d79553551850539e4674" [[package]] name = "javascriptcore-rs" -version = "0.16.0" +version = "1.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bf053e7843f2812ff03ef5afe34bb9c06ffee120385caad4f6b9967fcd37d41c" +checksum = "ca5671e9ffce8ffba57afc24070e906da7fc4b1ba66f2cabebf61bf2ea257fcc" dependencies = [ "bitflags 1.3.2", "glib", @@ -3222,28 +3254,30 @@ dependencies = [ [[package]] name = "javascriptcore-rs-sys" -version = "0.4.0" +version = "1.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "905fbb87419c5cde6e3269537e4ea7d46431f3008c5d057e915ef3f115e7793c" +checksum = "af1be78d14ffa4b75b66df31840478fef72b51f8c2465d4ca7c194da9f7a5124" dependencies = [ "glib-sys", "gobject-sys", "libc", - "system-deps 5.0.0", + "system-deps", ] [[package]] name = "jni" -version = "0.20.0" +version = "0.21.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "039022cdf4d7b1cf548d31f60ae783138e5fd42013f6271049d7df7afadef96c" +checksum = "1a87aa2bb7d2af34197c04845522473242e1aa17c12f4935d5856491a7fb8c97" dependencies = [ "cesu8", + "cfg-if", "combine", "jni-sys", "log", - "thiserror", + "thiserror 1.0.69", "walkdir", + "windows-sys 0.45.0", ] [[package]] @@ -3272,23 +3306,22 @@ dependencies = [ [[package]] name = "json-patch" -version = "2.0.0" +version = "3.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b1fb8864823fad91877e6caea0baca82e49e8db50f8e5c9f9a453e27d3330fc" +checksum = "863726d7afb6bc2590eeff7135d923545e5e964f004c2ccf8716c25e70a86f08" dependencies = [ "jsonptr", "serde", "serde_json", - "thiserror", + "thiserror 1.0.69", ] [[package]] name = "jsonptr" -version = "0.4.7" +version = "0.6.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1c6e529149475ca0b2820835d3dce8fcc41c6b943ca608d32f35b449255e4627" +checksum = "5dea2b27dd239b2556ed7a25ba842fe47fd602e7fc7433c2a8d6106d4d9edd70" dependencies = [ - "fluent-uri", "serde", "serde_json", ] @@ -3317,6 +3350,17 @@ dependencies = [ "cpufeatures", ] +[[package]] +name = "keyboard-types" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b750dcadc39a09dbadd74e118f6dd6598df77fa01df0cfcdc52c28dece74528a" +dependencies = [ + "bitflags 2.6.0", + "serde", + "unicode-segmentation", +] + [[package]] name = "keyring" version = "3.6.1" @@ -3327,7 +3371,7 @@ dependencies = [ "linux-keyutils", "log", "security-framework 2.11.1", - "security-framework 3.0.0", + "security-framework 3.0.1", "windows-sys 0.59.0", ] @@ -3352,9 +3396,9 @@ checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" [[package]] name = "libappindicator" -version = "0.7.1" +version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "db2d3cb96d092b4824cb306c9e544c856a4cb6210c1081945187f7f1924b47e8" +checksum = "03589b9607c868cc7ae54c0b2a22c8dc03dd41692d48f2d7df73615c6a95dc0a" dependencies = [ "glib", "gtk", @@ -3365,9 +3409,9 @@ dependencies = [ [[package]] name = "libappindicator-sys" -version = "0.7.3" +version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1b3b6681973cea8cc3bce7391e6d7d5502720b80a581c9a95c9cbaf592826aa" +checksum = "6e9ec52138abedcc58dc17a7c6c0c00a2bdb4f3427c7f63fa97fd0d859155caf" dependencies = [ "gtk-sys", "libloading 0.7.4", @@ -3376,9 +3420,9 @@ dependencies = [ [[package]] name = "libc" -version = "0.2.161" +version = "0.2.167" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e9489c2807c139ffd9c1794f4af0ebe86a828db53ecdc7fea2111d0fed085d1" +checksum = "09d6582e104315a817dff97f75133544b2e094ee22447d2acf4a74e189ba06fc" [[package]] name = "liblmdb-sys" @@ -3454,12 +3498,6 @@ dependencies = [ "libc", ] -[[package]] -name = "linux-raw-sys" -version = "0.3.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ef53942eb7bf7ff43a617b3e2c1c4a5ecf5944a7c1bc12d7ee39bbb15e5c1519" - [[package]] name = "linux-raw-sys" version = "0.4.14" @@ -3468,9 +3506,9 @@ checksum = "78b3ae25bc7c8c38cec158d1f2757ee79e9b3740fbc7ccf0e59e4b08d793fa89" [[package]] name = "litemap" -version = "0.7.3" +version = "0.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "643cb0b8d4fcc284004d5fd0d67ccf61dfffadb7f75e1e71bc420f4688a3a704" +checksum = "4ee93343901ab17bd981295f2cf0026d4ad018c7c31ba84549a4ddbb47a45104" [[package]] name = "lmdb-zero" @@ -3537,27 +3575,12 @@ dependencies = [ "serde-value", "serde_json", "serde_yaml", - "thiserror", + "thiserror 1.0.69", "thread-id", "typemap-ors", "winapi", ] -[[package]] -name = "loom" -version = "0.5.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ff50ecb28bb86013e935fb6683ab1f6d3a20016f123c76fd4c27470076ac30f5" -dependencies = [ - "cfg-if", - "generator", - "scoped-tls", - "serde", - "serde_json", - "tracing", - "tracing-subscriber", -] - [[package]] name = "lru-cache" version = "0.1.2" @@ -3642,15 +3665,6 @@ version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ffbee8634e0d45d258acb448e7eaab3fce7a0a467395d4d9f228e3c1f01fb2e4" -[[package]] -name = "matchers" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8263075bb86c5a1b1427b5ae862e8889656f126e9f77c484496e8b47cf5c5558" -dependencies = [ - "regex-automata 0.1.10", -] - [[package]] name = "matches" version = "0.1.10" @@ -3678,15 +3692,6 @@ dependencies = [ "libc", ] -[[package]] -name = "memoffset" -version = "0.6.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5aa361d4faea93603064a027415f07bd8e1d5c88c9fbf68bf56a285428fd79ce" -dependencies = [ - "autocfg", -] - [[package]] name = "memoffset" version = "0.9.1" @@ -3775,13 +3780,13 @@ dependencies = [ "log", "mach2", "memmap2", - "memoffset 0.9.1", + "memoffset", "minidump-common", "nix 0.28.0", "procfs-core", "scroll", "tempfile", - "thiserror", + "thiserror 1.0.69", ] [[package]] @@ -3796,9 +3801,9 @@ dependencies = [ "log", "minidump-writer", "parking_lot", - "polling 3.7.3", + "polling", "scroll", - "thiserror", + "thiserror 1.0.69", "uds", ] @@ -3810,7 +3815,7 @@ checksum = "d7c4f23f835dbe67e44ddf884d3802ff549ca5948bf60e9fd70e9a13c96324d1" dependencies = [ "crash-handler", "minidumper", - "thiserror", + "thiserror 1.0.69", "uuid", ] @@ -3838,8 +3843,8 @@ dependencies = [ [[package]] name = "minotari_app_grpc" -version = "1.8.0-pre.0" -source = "git+https://github.com/tari-project/tari.git?branch=development#e61b5e2d172f782e953f351a81723713b150c57d" +version = "1.9.0-pre.0" +source = "git+https://github.com/tari-project/tari.git?branch=development#a75e0c6f1b51b61aa1576bf671bd0d74bd45490f" dependencies = [ "argon2", "base64 0.13.1", @@ -3859,7 +3864,7 @@ dependencies = [ "tari_max_size", "tari_script", "tari_utilities", - "thiserror", + "thiserror 1.0.69", "tokio", "tonic", "tonic-build", @@ -3868,8 +3873,8 @@ dependencies = [ [[package]] name = "minotari_ledger_wallet_common" -version = "1.8.0-pre.0" -source = "git+https://github.com/tari-project/tari.git?branch=development#e61b5e2d172f782e953f351a81723713b150c57d" +version = "1.9.0-pre.0" +source = "git+https://github.com/tari-project/tari.git?branch=development#a75e0c6f1b51b61aa1576bf671bd0d74bd45490f" dependencies = [ "bs58 0.5.1", ] @@ -3877,7 +3882,7 @@ dependencies = [ [[package]] name = "minotari_node_grpc_client" version = "0.1.0" -source = "git+https://github.com/tari-project/tari.git?branch=development#e61b5e2d172f782e953f351a81723713b150c57d" +source = "git+https://github.com/tari-project/tari.git?branch=development#a75e0c6f1b51b61aa1576bf671bd0d74bd45490f" dependencies = [ "minotari_app_grpc", ] @@ -3885,11 +3890,11 @@ dependencies = [ [[package]] name = "minotari_wallet_grpc_client" version = "0.1.0" -source = "git+https://github.com/tari-project/tari.git?branch=development#e61b5e2d172f782e953f351a81723713b150c57d" +source = "git+https://github.com/tari-project/tari.git?branch=development#a75e0c6f1b51b61aa1576bf671bd0d74bd45490f" dependencies = [ "minotari_app_grpc", "tari_common_types", - "thiserror", + "thiserror 1.0.69", "tonic", ] @@ -3918,7 +3923,7 @@ dependencies = [ "hex-literal", "sealed", "serde", - "thiserror", + "thiserror 1.0.69", "tiny-keccak", ] @@ -3932,21 +3937,41 @@ dependencies = [ "curve25519-dalek", "rand 0.8.5", "sha3", - "thiserror", + "thiserror 1.0.69", ] [[package]] -name = "multiaddr" -version = "0.14.0" +name = "muda" +version = "0.15.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3c580bfdd8803cce319b047d239559a22f809094aaea4ac13902a1fdcfcd4261" +checksum = "fdae9c00e61cc0579bcac625e8ad22104c60548a025bfc972dc83868a28e1484" dependencies = [ - "arrayref", - "bs58 0.4.0", - "byteorder", - "data-encoding", - "multihash", - "percent-encoding", + "crossbeam-channel", + "dpi", + "gtk", + "keyboard-types", + "objc2", + "objc2-app-kit", + "objc2-foundation", + "once_cell", + "png", + "serde", + "thiserror 1.0.69", + "windows-sys 0.59.0", +] + +[[package]] +name = "multiaddr" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3c580bfdd8803cce319b047d239559a22f809094aaea4ac13902a1fdcfcd4261" +dependencies = [ + "arrayref", + "bs58 0.4.0", + "byteorder", + "data-encoding", + "multihash", + "percent-encoding", "serde", "static_assertions", "unsigned-varint", @@ -4009,15 +4034,17 @@ dependencies = [ [[package]] name = "ndk" -version = "0.6.0" +version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2032c77e030ddee34a6787a64166008da93f6a352b629261d0fee232b8742dd4" +checksum = "c3f42e7bbe13d351b6bead8286a43aac9534b82bd3cc43e47037f012ebfd62d4" dependencies = [ - "bitflags 1.3.2", + "bitflags 2.6.0", "jni-sys", + "log", "ndk-sys", "num_enum", - "thiserror", + "raw-window-handle", + "thiserror 1.0.69", ] [[package]] @@ -4028,9 +4055,9 @@ checksum = "27b02d87554356db9e9a873add8782d4ea6e3e58ea071a9adb9a2e8ddb884a8b" [[package]] name = "ndk-sys" -version = "0.3.0" +version = "0.6.0+11769913" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6e5a6ae77c8ee183dcbbba6150e2e6b9f3f4196a7666c02a715a95692ec1fa97" +checksum = "ee6cda3051665f1fb8d9e08fc35c96d5a244fb1be711a03b71118828afc9a873" dependencies = [ "jni-sys", ] @@ -4056,18 +4083,6 @@ dependencies = [ "smallvec", ] -[[package]] -name = "nix" -version = "0.24.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fa52e972a9a719cecb6864fb88568781eb706bac2cd1d4f04a648542dbf78069" -dependencies = [ - "bitflags 1.3.2", - "cfg-if", - "libc", - "memoffset 0.6.5", -] - [[package]] name = "nix" version = "0.28.0" @@ -4090,6 +4105,7 @@ dependencies = [ "cfg-if", "cfg_aliases 0.2.1", "libc", + "memoffset", ] [[package]] @@ -4123,16 +4139,6 @@ dependencies = [ "winapi", ] -[[package]] -name = "nu-ansi-term" -version = "0.46.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77a8165726e8236064dbb45459242600304b42a5ea24ee2948e18e023bf7ba84" -dependencies = [ - "overload", - "winapi", -] - [[package]] name = "num-bigint" version = "0.4.6" @@ -4157,7 +4163,7 @@ checksum = "ed3955f1a9c7c0c15e092f9c887db08b1fc683305fdf6eb6684f22555355e202" dependencies = [ "proc-macro2", "quote", - "syn 2.0.87", + "syn 2.0.89", ] [[package]] @@ -4167,7 +4173,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a652d9771a63711fd3c3deb670acfbe5c30a4072e664d7a3bf5a9e1056ac72c3" dependencies = [ "arrayvec", - "itoa 1.0.11", + "itoa 1.0.14", ] [[package]] @@ -4190,23 +4196,23 @@ dependencies = [ [[package]] name = "num_enum" -version = "0.5.11" +version = "0.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1f646caf906c20226733ed5b1374287eb97e3c2a5c227ce668c1f2ce20ae57c9" +checksum = "4e613fc340b2220f734a8595782c551f1250e969d87d3be1ae0579e8d4065179" dependencies = [ "num_enum_derive", ] [[package]] name = "num_enum_derive" -version = "0.5.11" +version = "0.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dcbff9bc912032c62bf65ef1d5aea88983b420f4f839db1e9b0c281a25c9c799" +checksum = "af1844ef2428cc3e1cb900be36181049ef3d3193c63e43026cfe202983b27a56" dependencies = [ - "proc-macro-crate 1.1.3", + "proc-macro-crate 3.2.0", "proc-macro2", "quote", - "syn 1.0.109", + "syn 2.0.89", ] [[package]] @@ -4219,7 +4225,7 @@ dependencies = [ "libloading 0.8.5", "nvml-wrapper-sys", "static_assertions", - "thiserror", + "thiserror 1.0.69", "wrapcenum-derive", ] @@ -4239,36 +4245,224 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "915b1b472bc21c53464d6c8461c9d3af805ba1ef837e1cac254428f4a77177b1" dependencies = [ "malloc_buf", - "objc_exception", ] [[package]] -name = "objc-foundation" -version = "0.1.1" +name = "objc-sys" +version = "0.3.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1add1b659e36c9607c7aab864a76c7a4c2760cd0cd2e120f3fb8b952c7e22bf9" +checksum = "cdb91bdd390c7ce1a8607f35f3ca7151b65afc0ff5ff3b34fa350f7d7c7e4310" dependencies = [ - "block", - "objc", - "objc_id", + "cc", ] [[package]] -name = "objc_exception" -version = "0.1.2" +name = "objc2" +version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ad970fb455818ad6cba4c122ad012fae53ae8b4795f86378bce65e4f6bab2ca4" +checksum = "46a785d4eeff09c14c487497c162e92766fbb3e4059a71840cecc03d9a50b804" dependencies = [ - "cc", + "objc-sys", + "objc2-encode", ] [[package]] -name = "objc_id" -version = "0.1.1" +name = "objc2-app-kit" +version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c92d4ddb4bd7b50d730c215ff871754d0da6b2178849f8a2a2ab69712d0c073b" +checksum = "e4e89ad9e3d7d297152b17d39ed92cd50ca8063a89a9fa569046d41568891eff" dependencies = [ - "objc", + "bitflags 2.6.0", + "block2", + "libc", + "objc2", + "objc2-core-data", + "objc2-core-image", + "objc2-foundation", + "objc2-quartz-core", +] + +[[package]] +name = "objc2-cloud-kit" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "74dd3b56391c7a0596a295029734d3c1c5e7e510a4cb30245f8221ccea96b009" +dependencies = [ + "bitflags 2.6.0", + "block2", + "objc2", + "objc2-core-location", + "objc2-foundation", +] + +[[package]] +name = "objc2-contacts" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a5ff520e9c33812fd374d8deecef01d4a840e7b41862d849513de77e44aa4889" +dependencies = [ + "block2", + "objc2", + "objc2-foundation", +] + +[[package]] +name = "objc2-core-data" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "617fbf49e071c178c0b24c080767db52958f716d9eabdf0890523aeae54773ef" +dependencies = [ + "bitflags 2.6.0", + "block2", + "objc2", + "objc2-foundation", +] + +[[package]] +name = "objc2-core-image" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "55260963a527c99f1819c4f8e3b47fe04f9650694ef348ffd2227e8196d34c80" +dependencies = [ + "block2", + "objc2", + "objc2-foundation", + "objc2-metal", +] + +[[package]] +name = "objc2-core-location" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "000cfee34e683244f284252ee206a27953279d370e309649dc3ee317b37e5781" +dependencies = [ + "block2", + "objc2", + "objc2-contacts", + "objc2-foundation", +] + +[[package]] +name = "objc2-encode" +version = "4.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7891e71393cd1f227313c9379a26a584ff3d7e6e7159e988851f0934c993f0f8" + +[[package]] +name = "objc2-foundation" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0ee638a5da3799329310ad4cfa62fbf045d5f56e3ef5ba4149e7452dcf89d5a8" +dependencies = [ + "bitflags 2.6.0", + "block2", + "libc", + "objc2", +] + +[[package]] +name = "objc2-link-presentation" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a1a1ae721c5e35be65f01a03b6d2ac13a54cb4fa70d8a5da293d7b0020261398" +dependencies = [ + "block2", + "objc2", + "objc2-app-kit", + "objc2-foundation", +] + +[[package]] +name = "objc2-metal" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dd0cba1276f6023976a406a14ffa85e1fdd19df6b0f737b063b95f6c8c7aadd6" +dependencies = [ + "bitflags 2.6.0", + "block2", + "objc2", + "objc2-foundation", +] + +[[package]] +name = "objc2-quartz-core" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e42bee7bff906b14b167da2bac5efe6b6a07e6f7c0a21a7308d40c960242dc7a" +dependencies = [ + "bitflags 2.6.0", + "block2", + "objc2", + "objc2-foundation", + "objc2-metal", +] + +[[package]] +name = "objc2-symbols" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0a684efe3dec1b305badae1a28f6555f6ddd3bb2c2267896782858d5a78404dc" +dependencies = [ + "objc2", + "objc2-foundation", +] + +[[package]] +name = "objc2-ui-kit" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b8bb46798b20cd6b91cbd113524c490f1686f4c4e8f49502431415f3512e2b6f" +dependencies = [ + "bitflags 2.6.0", + "block2", + "objc2", + "objc2-cloud-kit", + "objc2-core-data", + "objc2-core-image", + "objc2-core-location", + "objc2-foundation", + "objc2-link-presentation", + "objc2-quartz-core", + "objc2-symbols", + "objc2-uniform-type-identifiers", + "objc2-user-notifications", +] + +[[package]] +name = "objc2-uniform-type-identifiers" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "44fa5f9748dbfe1ca6c0b79ad20725a11eca7c2218bceb4b005cb1be26273bfe" +dependencies = [ + "block2", + "objc2", + "objc2-foundation", +] + +[[package]] +name = "objc2-user-notifications" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "76cfcbf642358e8689af64cee815d139339f3ed8ad05103ed5eaf73db8d84cb3" +dependencies = [ + "bitflags 2.6.0", + "block2", + "objc2", + "objc2-core-location", + "objc2-foundation", +] + +[[package]] +name = "objc2-web-kit" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "68bc69301064cebefc6c4c90ce9cba69225239e4b8ff99d445a2b5563797da65" +dependencies = [ + "bitflags 2.6.0", + "block2", + "objc2", + "objc2-app-kit", + "objc2-foundation", ] [[package]] @@ -4298,19 +4492,9 @@ checksum = "c08d65885ee38876c4f86fa503fb49d7b507c2b62552df7c70b2fce627e06381" [[package]] name = "open" -version = "3.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2078c0039e6a54a0c42c28faa984e115fb4c2d5bf2208f77d1961002df8576f8" -dependencies = [ - "pathdiff", - "windows-sys 0.42.0", -] - -[[package]] -name = "open" -version = "5.3.0" +version = "5.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "61a877bf6abd716642a53ef1b89fb498923a4afca5c754f9050b4d081c05c4b3" +checksum = "3ecd52f0b8d15c40ce4820aa251ed5de032e5d91fab27f7db2f40d42a8bdf69c" dependencies = [ "is-wsl", "libc", @@ -4325,7 +4509,7 @@ checksum = "6174bc48f102d208783c2c84bf931bb75927a617866870de8a4ea85597f871f5" dependencies = [ "bitflags 2.6.0", "cfg-if", - "foreign-types", + "foreign-types 0.3.2", "libc", "once_cell", "openssl-macros", @@ -4340,7 +4524,7 @@ checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c" dependencies = [ "proc-macro2", "quote", - "syn 2.0.87", + "syn 2.0.89", ] [[package]] @@ -4349,6 +4533,15 @@ version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ff011a302c396a5197692431fc1948019154afc178baf7d8e37367442a4601cf" +[[package]] +name = "openssl-src" +version = "300.4.1+3.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "faa4eac4138c62414b5622d1b31c5c304f34b406b013c079c2bbc652fdd6678c" +dependencies = [ + "cc", +] + [[package]] name = "openssl-sys" version = "0.9.104" @@ -4357,10 +4550,17 @@ checksum = "45abf306cbf99debc8195b66b7346498d7b10c210de50418b5ccd7ceba08c741" dependencies = [ "cc", "libc", + "openssl-src", "pkg-config", "vcpkg", ] +[[package]] +name = "option-ext" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "04744f49eae99ab78e0d5c0b603ab218f515ea8cfe5a456d7629ad883a3b6e7d" + [[package]] name = "ordered-float" version = "2.10.1" @@ -4372,9 +4572,9 @@ dependencies = [ [[package]] name = "ordered-stream" -version = "0.0.1" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "44630c059eacfd6e08bdaa51b1db2ce33119caa4ddc1235e923109aa5f25ccb1" +checksum = "9aa2b01e1d916879f73a53d01d1d6cee68adbb31d6d9177a8cfce093cced1d50" dependencies = [ "futures-core", "pin-project-lite", @@ -4401,19 +4601,13 @@ dependencies = [ "windows-sys 0.59.0", ] -[[package]] -name = "overload" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b15813163c1d831bf4a13c3610c05c0d03b39feb07f7e09fa234dac9b15aaf39" - [[package]] name = "pango" -version = "0.15.10" +version = "0.18.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "22e4045548659aee5313bde6c582b0d83a627b7904dd20dc2d9ef0895d414e4f" +checksum = "7ca27ec1eb0457ab26f3036ea52229edbdb74dee1edd29063f5b9b010e7ebee4" dependencies = [ - "bitflags 1.3.2", + "gio", "glib", "libc", "once_cell", @@ -4422,40 +4616,41 @@ dependencies = [ [[package]] name = "pango-sys" -version = "0.15.10" +version = "0.18.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d2a00081cde4661982ed91d80ef437c20eacaf6aa1a5962c0279ae194662c3aa" +checksum = "436737e391a843e5933d6d9aa102cb126d501e815b83601365a948a518555dc5" dependencies = [ "glib-sys", "gobject-sys", "libc", - "system-deps 6.2.2", + "system-deps", ] [[package]] name = "parity-scale-codec" -version = "3.6.12" +version = "3.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "306800abfa29c7f16596b5970a588435e3d5b3149683d00c12b699cc19f895ee" +checksum = "8be4817d39f3272f69c59fe05d0535ae6456c2dc2fa1ba02910296c7e0a5c590" dependencies = [ "arrayvec", "bitvec", "byte-slice-cast", "impl-trait-for-tuples", "parity-scale-codec-derive", + "rustversion", "serde", ] [[package]] name = "parity-scale-codec-derive" -version = "3.6.12" +version = "3.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d830939c76d294956402033aee57a6da7b438f2294eb94864c37b0569053a42c" +checksum = "8781a75c6205af67215f382092b6e0a4ff3734798523e69073d4bcd294ec767b" dependencies = [ "proc-macro-crate 3.2.0", "proc-macro2", "quote", - "syn 1.0.109", + "syn 2.0.89", ] [[package]] @@ -4506,9 +4701,9 @@ checksum = "ecba01bf2678719532c5e3059e0b5f0811273d94b397088b82e3bd0a78c78fdd" [[package]] name = "pathdiff" -version = "0.2.2" +version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d61c5ce1153ab5b689d0c074c4e7fc613e942dfb7dd9eea5ab202d2ad91fe361" +checksum = "df94ce210e5bc13cb6651479fa48d14f601d9858cfe0467f43ae157023b938d3" [[package]] name = "pbkdf2" @@ -4650,7 +4845,7 @@ dependencies = [ "phf_shared 0.11.2", "proc-macro2", "quote", - "syn 2.0.87", + "syn 2.0.89", ] [[package]] @@ -4686,7 +4881,7 @@ version = "0.3.15" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2dfa808155f59afafc457bd1a3835cb35d827f4387238099faa673447a656bfb" dependencies = [ - "clap 4.5.20", + "clap 4.5.21", "clap_complete", "clap_mangen", "include-lines", @@ -4731,7 +4926,7 @@ checksum = "3c0f5fad0874fc7abcd4d750e76917eaebbecaa2c20bde22e1dbeeba8beb758c" dependencies = [ "proc-macro2", "quote", - "syn 2.0.87", + "syn 2.0.89", ] [[package]] @@ -4746,6 +4941,17 @@ version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" +[[package]] +name = "piper" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "96c8c490f422ef9a4efd2cb5b42b76c8613d7e7dfc1caf667b8a3350a5acc066" +dependencies = [ + "atomic-waker", + "fastrand", + "futures-io", +] + [[package]] name = "pkg-config" version = "0.3.31" @@ -4786,31 +4992,15 @@ dependencies = [ [[package]] name = "polling" -version = "2.8.0" +version = "3.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4b2d323e8ca7996b3e23126511a523f7e62924d93ecd5ae73b333815b0eb3dce" -dependencies = [ - "autocfg", - "bitflags 1.3.2", - "cfg-if", - "concurrent-queue", - "libc", - "log", - "pin-project-lite", - "windows-sys 0.48.0", -] - -[[package]] -name = "polling" -version = "3.7.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cc2790cd301dec6cd3b7a025e4815cf825724a51c98dccfe6a3e55f05ffb6511" +checksum = "a604568c3202727d1507653cb121dbd627a58684eb09a820fd746bee38b4442f" dependencies = [ "cfg-if", "concurrent-queue", "hermit-abi 0.4.0", "pin-project-lite", - "rustix 0.38.39", + "rustix", "tracing", "windows-sys 0.59.0", ] @@ -4840,9 +5030,9 @@ dependencies = [ [[package]] name = "portable-atomic" -version = "1.9.0" +version = "1.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cc9c68a3f6da06753e9335d63e27f6b9754dd1920d941135b7ea8224f141adb2" +checksum = "280dc24453071f1b63954171985a0b0d30058d287960968b9b2aca264c8d4ee6" [[package]] name = "powerfmt" @@ -4882,7 +5072,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "64d1ec885c64d0457d564db4ec299b2dae3f9c02808b8ad9c3a089c591b18033" dependencies = [ "proc-macro2", - "syn 2.0.87", + "syn 2.0.89", ] [[package]] @@ -4903,10 +5093,19 @@ version = "1.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e17d47ce914bf4de440332250b0edd23ce48c005f59fab39d3335866b114f11a" dependencies = [ - "thiserror", + "thiserror 1.0.69", "toml 0.5.11", ] +[[package]] +name = "proc-macro-crate" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7e8366a6159044a37876a2b9817124296703c586a5c92e2c53751fa06d8d43e8" +dependencies = [ + "toml_edit 0.20.7", +] + [[package]] name = "proc-macro-crate" version = "3.2.0" @@ -4948,9 +5147,9 @@ checksum = "dc375e1527247fe1a97d8b7156678dfe7c1af2fc075c9a4db3690ecd2a148068" [[package]] name = "proc-macro2" -version = "1.0.89" +version = "1.0.92" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f139b0662de085916d1fb67d2b4169d1addddda1919e696f3252b740b629986e" +checksum = "37d3544b3f2748c54e147655edb5025752e2303145b5aefb3c3ea2c78b973bb0" dependencies = [ "unicode-ident", ] @@ -4971,7 +5170,7 @@ version = "0.11.9" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0b82eaa1d779e9a4bc1c3217db8ffbeabaae1dca241bf70183242128d48681cd" dependencies = [ - "bytes 1.8.0", + "bytes 1.9.0", "prost-derive 0.11.9", ] @@ -4981,7 +5180,7 @@ version = "0.13.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7b0487d90e047de87f984913713b85c601c05609aad5b0df4b4573fbf69aa13f" dependencies = [ - "bytes 1.8.0", + "bytes 1.9.0", "prost-derive 0.13.3", ] @@ -4991,7 +5190,7 @@ version = "0.11.9" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "119533552c9a7ffacc21e099c24a0ac8bb19c2a2a3f363de84cd9b844feab270" dependencies = [ - "bytes 1.8.0", + "bytes 1.9.0", "heck 0.4.1", "itertools 0.10.5", "lazy_static", @@ -5013,7 +5212,7 @@ version = "0.13.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0c1318b19085f08681016926435853bbf7858f9c082d0999b80550ff5d9abe15" dependencies = [ - "bytes 1.8.0", + "bytes 1.9.0", "heck 0.5.0", "itertools 0.13.0", "log", @@ -5024,7 +5223,7 @@ dependencies = [ "prost 0.13.3", "prost-types 0.13.3", "regex", - "syn 2.0.87", + "syn 2.0.89", "tempfile", ] @@ -5051,7 +5250,7 @@ dependencies = [ "itertools 0.13.0", "proc-macro2", "quote", - "syn 2.0.87", + "syn 2.0.89", ] [[package]] @@ -5087,6 +5286,58 @@ dependencies = [ "memchr", ] +[[package]] +name = "quinn" +version = "0.11.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "62e96808277ec6f97351a2380e6c25114bc9e67037775464979f3037c92d05ef" +dependencies = [ + "bytes 1.9.0", + "pin-project-lite", + "quinn-proto", + "quinn-udp", + "rustc-hash", + "rustls", + "socket2", + "thiserror 2.0.3", + "tokio", + "tracing", +] + +[[package]] +name = "quinn-proto" +version = "0.11.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a2fe5ef3495d7d2e377ff17b1a8ce2ee2ec2a18cde8b6ad6619d65d0701c135d" +dependencies = [ + "bytes 1.9.0", + "getrandom 0.2.15", + "rand 0.8.5", + "ring", + "rustc-hash", + "rustls", + "rustls-pki-types", + "slab", + "thiserror 2.0.3", + "tinyvec", + "tracing", + "web-time", +] + +[[package]] +name = "quinn-udp" +version = "0.5.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7d5a626c6807713b15cac82a6acaccd6043c9a5408c24baae07611fec3f243da" +dependencies = [ + "cfg_aliases 0.2.1", + "libc", + "once_cell", + "socket2", + "tracing", + "windows-sys 0.59.0", +] + [[package]] name = "quote" version = "1.0.37" @@ -5206,13 +5457,13 @@ dependencies = [ [[package]] name = "randomx-rs" -version = "1.3.1" +version = "1.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9abb8f2aa3432700c2b64a67406ac0da4956d78991f50559509cecc2b6abf249" +checksum = "09c347596479c4796192e68aec20e62e31655b57753586f2b1ec320b779ef14c" dependencies = [ "bitflags 1.3.2", "libc", - "thiserror", + "thiserror 1.0.69", ] [[package]] @@ -5226,9 +5477,9 @@ dependencies = [ [[package]] name = "raw-window-handle" -version = "0.5.2" +version = "0.6.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f2ff9a1f06a88b01621b7ae906ef0211290d1c8a168a15542486a8f61c0833b9" +checksum = "20675572f6f24e9e76ef639bc5552774ed45f1c30e2951e1e99c59888861c539" [[package]] name = "rayon" @@ -5291,7 +5542,7 @@ checksum = "ba009ff324d1fc1b900bd1fdb31564febe58a8ccc8a6fdbb93b543d33b13ca43" dependencies = [ "getrandom 0.2.15", "libredox", - "thiserror", + "thiserror 1.0.69", ] [[package]] @@ -5302,84 +5553,27 @@ checksum = "b544ef1b4eac5dc2db33ea63606ae9ffcfac26c1416a2806ae0bf5f56b201191" dependencies = [ "aho-corasick", "memchr", - "regex-automata 0.4.8", - "regex-syntax 0.8.5", -] - -[[package]] -name = "regex-automata" -version = "0.1.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6c230d73fb8d8c1b9c0b3135c5142a8acee3a0558fb8db5cf1cb65f8d7862132" -dependencies = [ - "regex-syntax 0.6.29", + "regex-automata", + "regex-syntax", ] [[package]] name = "regex-automata" -version = "0.4.8" +version = "0.4.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "368758f23274712b504848e9d5a6f010445cc8b87a7cdb4d7cbee666c1288da3" +checksum = "809e8dc61f6de73b46c85f4c96486310fe304c434cfa43669d7b40f711150908" dependencies = [ "aho-corasick", "memchr", - "regex-syntax 0.8.5", + "regex-syntax", ] -[[package]] -name = "regex-syntax" -version = "0.6.29" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f162c6dd7b008981e4d40210aca20b4bd0f9b60ca9271061b07f78537722f2e1" - [[package]] name = "regex-syntax" version = "0.8.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2b15c43186be67a4fd63bee50d0303afffcef381492ebe2c5d87f324e1b8815c" -[[package]] -name = "reqwest" -version = "0.11.27" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dd67538700a17451e7cba03ac727fb961abb7607553461627b97de0b89cf4a62" -dependencies = [ - "base64 0.21.7", - "bytes 1.8.0", - "encoding_rs", - "futures-core", - "futures-util", - "h2 0.3.26", - "http 0.2.12", - "http-body 0.4.6", - "hyper 0.14.31", - "hyper-tls 0.5.0", - "ipnet", - "js-sys", - "log", - "mime", - "native-tls", - "once_cell", - "percent-encoding", - "pin-project-lite", - "rustls-pemfile 1.0.4", - "serde", - "serde_json", - "serde_urlencoded", - "sync_wrapper 0.1.2", - "system-configuration 0.5.1", - "tokio", - "tokio-native-tls", - "tokio-util 0.7.12", - "tower-service", - "url", - "wasm-bindgen", - "wasm-bindgen-futures", - "wasm-streams", - "web-sys", - "winreg 0.50.0", -] - [[package]] name = "reqwest" version = "0.12.9" @@ -5387,18 +5581,18 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a77c62af46e79de0a562e1a9849205ffcb7fc1238876e9bd743357570e04046f" dependencies = [ "base64 0.22.1", - "bytes 1.8.0", + "bytes 1.9.0", "encoding_rs", "futures-channel", "futures-core", "futures-util", - "h2 0.4.6", - "http 1.1.0", - "http-body 1.0.1", + "h2", + "http", + "http-body", "http-body-util", - "hyper 1.5.0", + "hyper", "hyper-rustls", - "hyper-tls 0.6.0", + "hyper-tls", "hyper-util", "ipnet", "js-sys", @@ -5409,14 +5603,18 @@ dependencies = [ "once_cell", "percent-encoding", "pin-project-lite", - "rustls-pemfile 2.2.0", + "quinn", + "rustls", + "rustls-pemfile", + "rustls-pki-types", "serde", "serde_json", "serde_urlencoded", - "sync_wrapper 1.0.1", - "system-configuration 0.6.1", + "sync_wrapper 1.0.2", + "system-configuration", "tokio", "tokio-native-tls", + "tokio-rustls", "tokio-util 0.7.12", "tower-service", "url", @@ -5424,6 +5622,7 @@ dependencies = [ "wasm-bindgen-futures", "wasm-streams", "web-sys", + "webpki-roots", "windows-registry", ] @@ -5437,30 +5636,6 @@ dependencies = [ "quick-error", ] -[[package]] -name = "rfd" -version = "0.10.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0149778bd99b6959285b0933288206090c50e2327f47a9c463bfdbf45c8823ea" -dependencies = [ - "block", - "dispatch", - "glib-sys", - "gobject-sys", - "gtk-sys", - "js-sys", - "lazy_static", - "log", - "objc", - "objc-foundation", - "objc_id", - "raw-window-handle", - "wasm-bindgen", - "wasm-bindgen-futures", - "web-sys", - "windows 0.37.0", -] - [[package]] name = "ring" version = "0.17.8" @@ -5488,6 +5663,12 @@ version = "0.1.24" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "719b953e2095829ee67db738b3bfa9fa368c94900df327b3f07fe6e794d2fe1f" +[[package]] +name = "rustc-hash" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "583034fd73374156e66797ed8e5b0d5690409c9226b22d87cb7f19821c05d152" + [[package]] name = "rustc-hex" version = "2.1.0" @@ -5505,36 +5686,22 @@ dependencies = [ [[package]] name = "rustix" -version = "0.37.27" +version = "0.38.41" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fea8ca367a3a01fe35e6943c400addf443c0f57670e6ec51196f71a4b8762dd2" -dependencies = [ - "bitflags 1.3.2", - "errno", - "io-lifetimes", - "libc", - "linux-raw-sys 0.3.8", - "windows-sys 0.48.0", -] - -[[package]] -name = "rustix" -version = "0.38.39" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "375116bee2be9ed569afe2154ea6a99dfdffd257f533f187498c2a8f5feaf4ee" +checksum = "d7f649912bc1495e167a6edee79151c84b1bad49748cb4f1f1167f459f6224f6" dependencies = [ "bitflags 2.6.0", "errno", "libc", - "linux-raw-sys 0.4.14", + "linux-raw-sys", "windows-sys 0.52.0", ] [[package]] name = "rustls" -version = "0.23.16" +version = "0.23.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eee87ff5d9b36712a58574e12e9f0ea80f915a5b0ac518d322b24a465617925e" +checksum = "934b404430bb06b3fae2cba809eb45a1ab1aecd64491213d7c3301b88393f8d1" dependencies = [ "log", "once_cell", @@ -5545,15 +5712,6 @@ dependencies = [ "zeroize", ] -[[package]] -name = "rustls-pemfile" -version = "1.0.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1c74cae0a4cf6ccbbf5f359f08efdf8ee7e1dc532573bf0db71968cb56b1448c" -dependencies = [ - "base64 0.21.7", -] - [[package]] name = "rustls-pemfile" version = "2.2.0" @@ -5568,6 +5726,9 @@ name = "rustls-pki-types" version = "1.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "16f1201b3c9a7ee8039bcadc17b7e605e2945b27eee7631788c1bd2b0643674b" +dependencies = [ + "web-time", +] [[package]] name = "rustls-webpki" @@ -5613,9 +5774,9 @@ dependencies = [ [[package]] name = "schannel" -version = "0.1.26" +version = "0.1.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "01227be5826fa0690321a2ba6c5cd57a19cf3f6a09e76973b58e61de6ab9d1c1" +checksum = "1f29ebaa345f945cec9fbbc532eb307f0fdad8161f281b6369539c8d84876b3d" dependencies = [ "windows-sys 0.59.0", ] @@ -5630,10 +5791,31 @@ dependencies = [ ] [[package]] -name = "scoped-tls" -version = "1.0.1" +name = "schemars" +version = "0.8.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e1cf6437eb19a8f4a6cc0f7dca544973b0b78843adbfeb3683d1a94a0024a294" +checksum = "09c024468a378b7e36765cd36702b7a90cc3cba11654f6685c8f233408e89e92" +dependencies = [ + "dyn-clone", + "indexmap 1.9.3", + "schemars_derive", + "serde", + "serde_json", + "url", + "uuid", +] + +[[package]] +name = "schemars_derive" +version = "0.8.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b1eee588578aff73f856ab961cd2f79e36bc45d7ded33a7562adba4667aecc0e" +dependencies = [ + "proc-macro2", + "quote", + "serde_derive_internals", + "syn 2.0.89", +] [[package]] name = "scopeguard" @@ -5658,7 +5840,7 @@ checksum = "7f81c2fde025af7e69b1d1420531c8a8811ca898919db177141a85313b1cb932" dependencies = [ "proc-macro2", "quote", - "syn 2.0.87", + "syn 2.0.89", ] [[package]] @@ -5670,7 +5852,7 @@ dependencies = [ "heck 0.4.1", "proc-macro2", "quote", - "syn 2.0.87", + "syn 2.0.89", ] [[package]] @@ -5688,9 +5870,9 @@ dependencies = [ [[package]] name = "security-framework" -version = "3.0.0" +version = "3.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f9d0283c0a4a22a0f1b0e4edca251aa20b92fc96eaa09b84bec052f9415e9d71" +checksum = "e1415a607e92bec364ea2cf9264646dcce0f91e6d65281bd6f2819cca3bf39c8" dependencies = [ "bitflags 2.6.0", "core-foundation 0.10.0", @@ -5701,9 +5883,9 @@ dependencies = [ [[package]] name = "security-framework-sys" -version = "2.12.0" +version = "2.12.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ea4a292869320c0272d7bc55a5a6aafaff59b4f63404a003887b679a2e05b4b6" +checksum = "fa39c7303dc58b5543c94d22c1766b0d31f2ee58306363ea622b10bbc075eaa2" dependencies = [ "core-foundation-sys", "libc", @@ -5746,8 +5928,7 @@ checksum = "5484316556650182f03b43d4c746ce0e3e48074a21e2f51244b648b6542e1066" dependencies = [ "httpdate", "native-tls", - "reqwest 0.12.9", - "sentry-anyhow", + "reqwest", "sentry-backtrace", "sentry-contexts", "sentry-core", @@ -5758,17 +5939,6 @@ dependencies = [ "ureq", ] -[[package]] -name = "sentry-anyhow" -version = "0.34.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d672bfd1ed4e90978435f3c0704edb71a7a9d86403657839d518cd6aa278aff5" -dependencies = [ - "anyhow", - "sentry-backtrace", - "sentry-core", -] - [[package]] name = "sentry-backtrace" version = "0.34.0" @@ -5837,21 +6007,7 @@ checksum = "c1356f9564dba35a7269402415ed1f3d6598a8ed51e62e8d8e75da1b4361b3f5" dependencies = [ "minidumper-child", "sentry", - "thiserror", -] - -[[package]] -name = "sentry-tauri" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ffe902aed0cf49c2636664a789f38faa220f29bad4b4b5d8a9f9ce3d9cd555b3" -dependencies = [ - "base64 0.22.1", - "sentry", - "sentry-rust-minidump", - "serde", - "tauri", - "thiserror", + "thiserror 1.0.69", ] [[package]] @@ -5877,7 +6033,7 @@ dependencies = [ "rand 0.8.5", "serde", "serde_json", - "thiserror", + "thiserror 1.0.69", "time", "url", "uuid", @@ -5885,13 +6041,24 @@ dependencies = [ [[package]] name = "serde" -version = "1.0.214" +version = "1.0.215" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f55c3193aca71c12ad7890f1785d2b73e1b9f63a0bbc353c08ef26fe03fc56b5" +checksum = "6513c1ad0b11a9376da888e3e0baa0077f1aed55c17f50e7b2397136129fb88f" dependencies = [ "serde_derive", ] +[[package]] +name = "serde-untagged" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2676ba99bd82f75cae5cbd2c8eda6fa0b8760f18978ea840e980dd5567b5c5b6" +dependencies = [ + "erased-serde", + "serde", + "typeid", +] + [[package]] name = "serde-value" version = "0.7.0" @@ -5914,23 +6081,33 @@ dependencies = [ [[package]] name = "serde_derive" -version = "1.0.214" +version = "1.0.215" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ad1e866f866923f252f05c889987993144fb74e722403468a4ebd70c3cd756c0" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.89", +] + +[[package]] +name = "serde_derive_internals" +version = "0.29.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "de523f781f095e28fa605cdce0f8307e451cc0fd14e2eb4cd2e98a355b147766" +checksum = "18d26a20a969b9e3fdf2fc2d9f21eda6c40e2de84c9408bb5d3b05d499aae711" dependencies = [ "proc-macro2", "quote", - "syn 2.0.87", + "syn 2.0.89", ] [[package]] name = "serde_json" -version = "1.0.132" +version = "1.0.133" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d726bfaff4b320266d395898905d0eba0345aae23b54aee3a737e260fd46db03" +checksum = "c7fceb2473b9166b2294ef05efcb65a3db80803f0b03ef86a5fc88a2b85ee377" dependencies = [ - "indexmap 2.6.0", - "itoa 1.0.11", + "itoa 1.0.14", "memchr", "ryu", "serde", @@ -5944,7 +6121,7 @@ checksum = "6c64451ba24fc7a6a2d60fc75dd9c83c90903b19028d4eff35e88fc1e86564e9" dependencies = [ "proc-macro2", "quote", - "syn 2.0.87", + "syn 2.0.89", ] [[package]] @@ -5963,7 +6140,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d3491c14715ca2294c4d6a88f15e84739788c1d030eed8c110436aafdaa2f3fd" dependencies = [ "form_urlencoded", - "itoa 1.0.11", + "itoa 1.0.14", "ryu", "serde", ] @@ -5995,7 +6172,7 @@ dependencies = [ "darling", "proc-macro2", "quote", - "syn 2.0.87", + "syn 2.0.89", ] [[package]] @@ -6005,7 +6182,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6a8b1a1a2ebf674015cc02edccce75287f1a0130d394307b36743c2f5d504b47" dependencies = [ "indexmap 2.6.0", - "itoa 1.0.11", + "itoa 1.0.14", "ryu", "serde", "unsafe-libyaml", @@ -6013,9 +6190,9 @@ dependencies = [ [[package]] name = "serialize-to-javascript" -version = "0.1.2" +version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "04f3666a07a197cdb77cdf306c32be9b7f598d7060d50cfd4d5aa04bfd92f6c5" +checksum = "c9823f2d3b6a81d98228151fdeaf848206a7855a7a042bbf9bf870449a66cafb" dependencies = [ "serde", "serde_json", @@ -6024,13 +6201,13 @@ dependencies = [ [[package]] name = "serialize-to-javascript-impl" -version = "0.1.2" +version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "772ee033c0916d670af7860b6e1ef7d658a4629a6d0b4c8c3e67f09b3765b75d" +checksum = "74064874e9f6a15f04c1f3cb627902d0e6b410abbf36668afa873c61889f1763" dependencies = [ "proc-macro2", "quote", - "syn 2.0.87", + "syn 1.0.109", ] [[package]] @@ -6043,15 +6220,6 @@ dependencies = [ "stable_deref_trait", ] -[[package]] -name = "sha1" -version = "0.6.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c1da05c97445caa12d05e848c4a4fcbbea29e748ac28f7e80e9b010392063770" -dependencies = [ - "sha1_smol", -] - [[package]] name = "sha1" version = "0.10.6" @@ -6063,12 +6231,6 @@ dependencies = [ "digest", ] -[[package]] -name = "sha1_smol" -version = "1.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bbfa15b3dddfee50a0fff136974b3e1bde555604ba463834a7eb7deb6417705d" - [[package]] name = "sha2" version = "0.10.8" @@ -6090,15 +6252,6 @@ dependencies = [ "keccak", ] -[[package]] -name = "sharded-slab" -version = "0.1.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f40ca3c46823713e0d4209592e8d6e826aa57e928f09752619fc696c499637f6" -dependencies = [ - "lazy_static", -] - [[package]] name = "shared_child" version = "1.0.1" @@ -6138,7 +6291,7 @@ checksum = "adc4e5204eb1910f40f9cfa375f6f05b68c3abac4b6fd879c8ff5e7ae8a0a085" dependencies = [ "num-bigint", "num-traits", - "thiserror", + "thiserror 1.0.69", "time", ] @@ -6171,7 +6324,7 @@ checksum = "0eb01866308440fc64d6c44d9e86c5cc17adfe33c4d6eed55da9145044d0ffc1" dependencies = [ "proc-macro2", "quote", - "syn 2.0.87", + "syn 2.0.89", ] [[package]] @@ -6214,50 +6367,60 @@ dependencies = [ [[package]] name = "socket2" -version = "0.4.10" +version = "0.5.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9f7916fc008ca5542385b89a3d3ce689953c143e9304a9bf8beec1de48994c0d" +checksum = "c970269d99b64e60ec3bd6ad27270092a5394c4e309314b18ae3fe575695fbe8" dependencies = [ "libc", - "winapi", + "windows-sys 0.52.0", ] [[package]] -name = "socket2" -version = "0.5.7" +name = "softbuffer" +version = "0.4.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ce305eb0b4296696835b71df73eb912e0f1ffd2556a501fcede6e0c50349191c" +checksum = "18051cdd562e792cad055119e0cdb2cfc137e44e3987532e0f9659a77931bb08" dependencies = [ - "libc", - "windows-sys 0.52.0", + "bytemuck", + "cfg_aliases 0.2.1", + "core-graphics", + "foreign-types 0.5.0", + "js-sys", + "log", + "objc2", + "objc2-foundation", + "objc2-quartz-core", + "raw-window-handle", + "redox_syscall", + "wasm-bindgen", + "web-sys", + "windows-sys 0.59.0", ] [[package]] -name = "soup2" -version = "0.2.1" +name = "soup3" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b2b4d76501d8ba387cf0fefbe055c3e0a59891d09f0f995ae4e4b16f6b60f3c0" +checksum = "471f924a40f31251afc77450e781cb26d55c0b650842efafc9c6cbd2f7cc4f9f" dependencies = [ - "bitflags 1.3.2", + "futures-channel", "gio", "glib", "libc", - "once_cell", - "soup2-sys", + "soup3-sys", ] [[package]] -name = "soup2-sys" -version = "0.2.0" +name = "soup3-sys" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "009ef427103fcb17f802871647a7fa6c60cbb654b4c4e4c0ac60a31c5f6dc9cf" +checksum = "7ebe8950a680a12f24f15ebe1bf70db7af98ad242d9db43596ad3108aab86c27" dependencies = [ - "bitflags 1.3.2", "gio-sys", "glib-sys", "gobject-sys", "libc", - "system-deps 5.0.0", + "system-deps", ] [[package]] @@ -6278,15 +6441,6 @@ version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e7386b49cb287f6fafbfd3bd604914bccb99fb8d53483f40e1ecfda5d45f3370" -[[package]] -name = "state" -version = "0.5.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dbe866e1e51e8260c9eed836a042a5e7f6726bb2b411dffeaa712e19c388f23b" -dependencies = [ - "loom", -] - [[package]] name = "static_assertions" version = "1.1.0" @@ -6392,21 +6546,21 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "171758edb47aa306a78dfa4ab9aeb5167405bd4e3dc2b64e88f6a84bbe98bd63" [[package]] -name = "syn" -version = "1.0.109" +name = "swift-rs" +version = "1.0.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237" +checksum = "4057c98e2e852d51fdcfca832aac7b571f6b351ad159f9eda5db1655f8d0c4d7" dependencies = [ - "proc-macro2", - "quote", - "unicode-ident", + "base64 0.21.7", + "serde", + "serde_json", ] [[package]] name = "syn" -version = "2.0.87" +version = "1.0.109" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "25aa4ce346d03a6dcd68dd8b4010bcb74e54e62c90c573f394c46eae99aba32d" +checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237" dependencies = [ "proc-macro2", "quote", @@ -6414,15 +6568,14 @@ dependencies = [ ] [[package]] -name = "syn_derive" -version = "0.1.8" +name = "syn" +version = "2.0.89" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1329189c02ff984e9736652b1631330da25eaa6bc639089ed4915d25446cbe7b" +checksum = "44d46482f1c1c87acd84dea20c1bf5ebff4c757009ed6bf19cfd36fb10e92c4e" dependencies = [ - "proc-macro-error", "proc-macro2", "quote", - "syn 2.0.87", + "unicode-ident", ] [[package]] @@ -6433,9 +6586,9 @@ checksum = "2047c6ded9c721764247e62cd3b03c09ffc529b2ba5b10ec482ae507a4a70160" [[package]] name = "sync_wrapper" -version = "1.0.1" +version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a7065abeca94b6a8a577f9bd45aa0867a2238b74e8eb67cf10d492bc39351394" +checksum = "0bf256ce5efdfa370213c1dabab5935a12e49f2c58d15e9eac2870d3b4f27263" dependencies = [ "futures-core", ] @@ -6460,7 +6613,7 @@ checksum = "c8af7666ab7b6390ab78131fb5b0fce11d6b7a6951602017c35fa82800708971" dependencies = [ "proc-macro2", "quote", - "syn 2.0.87", + "syn 2.0.89", ] [[package]] @@ -6486,17 +6639,6 @@ dependencies = [ "windows 0.57.0", ] -[[package]] -name = "system-configuration" -version = "0.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ba3a3adc5c275d719af8cb4272ea1c4a6d668a777f37e115f6d11ddbc1c8e0e7" -dependencies = [ - "bitflags 1.3.2", - "core-foundation 0.9.4", - "system-configuration-sys 0.5.0", -] - [[package]] name = "system-configuration" version = "0.6.1" @@ -6505,17 +6647,7 @@ checksum = "3c879d448e9d986b661742763247d3693ed13609438cf3d006f51f5368a5ba6b" dependencies = [ "bitflags 2.6.0", "core-foundation 0.9.4", - "system-configuration-sys 0.6.0", -] - -[[package]] -name = "system-configuration-sys" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a75fb188eb626b924683e3b95e3a48e63551fcfb51949de2f06a9d91dbee93c9" -dependencies = [ - "core-foundation-sys", - "libc", + "system-configuration-sys", ] [[package]] @@ -6528,61 +6660,39 @@ dependencies = [ "libc", ] -[[package]] -name = "system-deps" -version = "5.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "18db855554db7bd0e73e06cf7ba3df39f97812cb11d3f75e71c39bf45171797e" -dependencies = [ - "cfg-expr 0.9.1", - "heck 0.3.3", - "pkg-config", - "toml 0.5.11", - "version-compare 0.0.11", -] - [[package]] name = "system-deps" version = "6.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a3e535eb8dded36d55ec13eddacd30dec501792ff23a0b1682c38601b8cf2349" dependencies = [ - "cfg-expr 0.15.8", + "cfg-expr", "heck 0.5.0", "pkg-config", "toml 0.8.19", - "version-compare 0.2.0", + "version-compare", ] [[package]] name = "tao" -version = "0.16.10" +version = "0.30.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "48d298c441a1da46e28e8ad8ec205aab7fd8cd71b9d10e05454224eef422e1ae" +checksum = "6682a07cf5bab0b8a2bd20d0a542917ab928b5edb75ebd4eda6b05cbaab872da" dependencies = [ - "bitflags 1.3.2", - "cairo-rs", - "cc", + "bitflags 2.6.0", "cocoa", - "core-foundation 0.9.4", + "core-foundation 0.10.0", "core-graphics", "crossbeam-channel", - "dirs-next 2.0.0", "dispatch", - "gdk", - "gdk-pixbuf", - "gdk-sys", + "dlopen2", + "dpi", "gdkwayland-sys", "gdkx11-sys", - "gio", - "glib", - "glib-sys", "gtk", - "image", "instant", "jni", "lazy_static", - "libappindicator", "libc", "log", "ndk", @@ -6591,15 +6701,14 @@ dependencies = [ "objc", "once_cell", "parking_lot", - "png", "raw-window-handle", "scopeguard", - "serde", "tao-macros", "unicode-segmentation", - "uuid", - "windows 0.39.0", - "windows-implement 0.39.0", + "url", + "windows 0.58.0", + "windows-core 0.58.0", + "windows-version", "x11-dl", ] @@ -6611,7 +6720,7 @@ checksum = "f4e16beb8b2ac17db28eab8bca40e62dbfbb34c0fcdc6d9826b11b7b5d047dfd" dependencies = [ "proc-macro2", "quote", - "syn 2.0.87", + "syn 2.0.89", ] [[package]] @@ -6659,14 +6768,16 @@ dependencies = [ "blake2", "chrono", "device_query", + "dirs 5.0.1", "dunce", "dyn-clone", "embed-resource", "fix-path-env", "flate2", - "futures-lite 2.4.0", + "futures-lite", "futures-util", - "human_format", + "hickory-client", + "hickory-proto", "jsonwebtoken", "keyring", "libsqlite3-sys", @@ -6677,15 +6788,14 @@ dependencies = [ "monero-address-creator", "nix 0.29.0", "nvml-wrapper", - "open 5.3.0", + "open", + "openssl", "phraze", "rand 0.8.5", "regex", - "reqwest 0.12.9", + "reqwest", "sanitize-filename", "semver", - "sentry", - "sentry-tauri", "serde", "serde_cbor", "serde_json", @@ -6703,13 +6813,18 @@ dependencies = [ "tari_utilities", "tauri", "tauri-build", + "tauri-plugin-os", + "tauri-plugin-process", + "tauri-plugin-sentry", + "tauri-plugin-shell", "tauri-plugin-single-instance", - "thiserror", + "tauri-plugin-updater", + "thiserror 1.0.69", "tokio", "tokio-util 0.7.12", "winreg 0.52.0", "xz2", - "zip 2.2.0", + "zip", ] [[package]] @@ -6735,12 +6850,12 @@ dependencies = [ [[package]] name = "tari_common" -version = "1.8.0-pre.0" -source = "git+https://github.com/tari-project/tari.git?branch=development#e61b5e2d172f782e953f351a81723713b150c57d" +version = "1.9.0-pre.0" +source = "git+https://github.com/tari-project/tari.git?branch=development#a75e0c6f1b51b61aa1576bf671bd0d74bd45490f" dependencies = [ "anyhow", "config", - "dirs-next 1.0.2", + "dirs-next", "log", "log4rs", "multiaddr", @@ -6753,28 +6868,28 @@ dependencies = [ "structopt", "tari_features", "tempfile", - "thiserror", + "thiserror 1.0.69", "toml 0.5.11", ] [[package]] name = "tari_common_sqlite" -version = "1.8.0-pre.0" -source = "git+https://github.com/tari-project/tari.git?branch=development#e61b5e2d172f782e953f351a81723713b150c57d" +version = "1.9.0-pre.0" +source = "git+https://github.com/tari-project/tari.git?branch=development#a75e0c6f1b51b61aa1576bf671bd0d74bd45490f" dependencies = [ "diesel", "diesel_migrations", "log", "serde", "tari_utilities", - "thiserror", + "thiserror 1.0.69", "tokio", ] [[package]] name = "tari_common_types" -version = "1.8.0-pre.0" -source = "git+https://github.com/tari-project/tari.git?branch=development#e61b5e2d172f782e953f351a81723713b150c57d" +version = "1.9.0-pre.0" +source = "git+https://github.com/tari-project/tari.git?branch=development#a75e0c6f1b51b61aa1576bf671bd0d74bd45490f" dependencies = [ "base64 0.21.7", "bitflags 2.6.0", @@ -6794,19 +6909,19 @@ dependencies = [ "tari_common", "tari_crypto", "tari_utilities", - "thiserror", + "thiserror 1.0.69", ] [[package]] name = "tari_comms" -version = "1.8.0-pre.0" -source = "git+https://github.com/tari-project/tari.git?branch=development#e61b5e2d172f782e953f351a81723713b150c57d" +version = "1.9.0-pre.0" +source = "git+https://github.com/tari-project/tari.git?branch=development#a75e0c6f1b51b61aa1576bf671bd0d74bd45490f" dependencies = [ "anyhow", "async-trait", "bitflags 2.6.0", "blake2", - "bytes 1.8.0", + "bytes 1.9.0", "chrono", "cidr", "data-encoding", @@ -6831,7 +6946,7 @@ dependencies = [ "tari_shutdown", "tari_storage", "tari_utilities", - "thiserror", + "thiserror 1.0.69", "tokio", "tokio-stream", "tokio-util 0.6.10", @@ -6843,8 +6958,8 @@ dependencies = [ [[package]] name = "tari_comms_dht" -version = "1.8.0-pre.0" -source = "git+https://github.com/tari-project/tari.git?branch=development#e61b5e2d172f782e953f351a81723713b150c57d" +version = "1.9.0-pre.0" +source = "git+https://github.com/tari-project/tari.git?branch=development#a75e0c6f1b51b61aa1576bf671bd0d74bd45490f" dependencies = [ "anyhow", "bitflags 2.6.0", @@ -6870,7 +6985,7 @@ dependencies = [ "tari_shutdown", "tari_storage", "tari_utilities", - "thiserror", + "thiserror 1.0.69", "tokio", "tower 0.4.13", "zeroize", @@ -6878,8 +6993,8 @@ dependencies = [ [[package]] name = "tari_comms_rpc_macros" -version = "1.8.0-pre.0" -source = "git+https://github.com/tari-project/tari.git?branch=development#e61b5e2d172f782e953f351a81723713b150c57d" +version = "1.9.0-pre.0" +source = "git+https://github.com/tari-project/tari.git?branch=development#a75e0c6f1b51b61aa1576bf671bd0d74bd45490f" dependencies = [ "proc-macro2", "quote", @@ -6888,9 +7003,10 @@ dependencies = [ [[package]] name = "tari_core" -version = "1.8.0-pre.0" -source = "git+https://github.com/tari-project/tari.git?branch=development#e61b5e2d172f782e953f351a81723713b150c57d" +version = "1.9.0-pre.0" +source = "git+https://github.com/tari-project/tari.git?branch=development#a75e0c6f1b51b61aa1576bf671bd0d74bd45490f" dependencies = [ + "anyhow", "async-trait", "bincode", "bitflags 2.6.0", @@ -6902,10 +7018,11 @@ dependencies = [ "decimal-rs", "derivative", "digest", - "dirs-next 1.0.2", + "dirs-next", "fs2", "futures 0.3.31", "hex", + "hickory-client", "integer-encoding", "lmdb-zero", "log", @@ -6947,7 +7064,7 @@ dependencies = [ "tari_storage", "tari_test_utils", "tari_utilities", - "thiserror", + "thiserror 1.0.69", "tokio", "tracing", "zeroize", @@ -6979,13 +7096,13 @@ dependencies = [ [[package]] name = "tari_features" -version = "1.8.0-pre.0" -source = "git+https://github.com/tari-project/tari.git?branch=development#e61b5e2d172f782e953f351a81723713b150c57d" +version = "1.9.0-pre.0" +source = "git+https://github.com/tari-project/tari.git?branch=development#a75e0c6f1b51b61aa1576bf671bd0d74bd45490f" [[package]] name = "tari_hashing" -version = "1.8.0-pre.0" -source = "git+https://github.com/tari-project/tari.git?branch=development#e61b5e2d172f782e953f351a81723713b150c57d" +version = "1.9.0-pre.0" +source = "git+https://github.com/tari-project/tari.git?branch=development#a75e0c6f1b51b61aa1576bf671bd0d74bd45490f" dependencies = [ "borsh", "digest", @@ -6994,8 +7111,8 @@ dependencies = [ [[package]] name = "tari_key_manager" -version = "1.8.0-pre.0" -source = "git+https://github.com/tari-project/tari.git?branch=development#e61b5e2d172f782e953f351a81723713b150c57d" +version = "1.9.0-pre.0" +source = "git+https://github.com/tari-project/tari.git?branch=development#a75e0c6f1b51b61aa1576bf671bd0d74bd45490f" dependencies = [ "argon2", "async-trait", @@ -7020,26 +7137,26 @@ dependencies = [ "tari_crypto", "tari_service_framework", "tari_utilities", - "thiserror", + "thiserror 1.0.69", "tokio", "zeroize", ] [[package]] name = "tari_max_size" -version = "1.8.0-pre.0" -source = "git+https://github.com/tari-project/tari.git?branch=development#e61b5e2d172f782e953f351a81723713b150c57d" +version = "1.9.0-pre.0" +source = "git+https://github.com/tari-project/tari.git?branch=development#a75e0c6f1b51b61aa1576bf671bd0d74bd45490f" dependencies = [ "borsh", "serde", "tari_utilities", - "thiserror", + "thiserror 1.0.69", ] [[package]] name = "tari_mmr" -version = "1.8.0-pre.0" -source = "git+https://github.com/tari-project/tari.git?branch=development#e61b5e2d172f782e953f351a81723713b150c57d" +version = "1.9.0-pre.0" +source = "git+https://github.com/tari-project/tari.git?branch=development#a75e0c6f1b51b61aa1576bf671bd0d74bd45490f" dependencies = [ "borsh", "digest", @@ -7047,13 +7164,13 @@ dependencies = [ "serde", "tari_crypto", "tari_utilities", - "thiserror", + "thiserror 1.0.69", ] [[package]] name = "tari_p2p" -version = "1.8.0-pre.0" -source = "git+https://github.com/tari-project/tari.git?branch=development#e61b5e2d172f782e953f351a81723713b150c57d" +version = "1.9.0-pre.0" +source = "git+https://github.com/tari-project/tari.git?branch=development#a75e0c6f1b51b61aa1576bf671bd0d74bd45490f" dependencies = [ "anyhow", "fs2", @@ -7074,7 +7191,7 @@ dependencies = [ "tari_shutdown", "tari_storage", "tari_utilities", - "thiserror", + "thiserror 1.0.69", "tokio", "tokio-stream", "tower 0.4.13", @@ -7083,8 +7200,8 @@ dependencies = [ [[package]] name = "tari_script" -version = "1.8.0-pre.0" -source = "git+https://github.com/tari-project/tari.git?branch=development#e61b5e2d172f782e953f351a81723713b150c57d" +version = "1.9.0-pre.0" +source = "git+https://github.com/tari-project/tari.git?branch=development#a75e0c6f1b51b61aa1576bf671bd0d74bd45490f" dependencies = [ "blake2", "borsh", @@ -7096,48 +7213,48 @@ dependencies = [ "tari_crypto", "tari_max_size", "tari_utilities", - "thiserror", + "thiserror 1.0.69", ] [[package]] name = "tari_service_framework" -version = "1.8.0-pre.0" -source = "git+https://github.com/tari-project/tari.git?branch=development#e61b5e2d172f782e953f351a81723713b150c57d" +version = "1.9.0-pre.0" +source = "git+https://github.com/tari-project/tari.git?branch=development#a75e0c6f1b51b61aa1576bf671bd0d74bd45490f" dependencies = [ "anyhow", "async-trait", "futures 0.3.31", "log", "tari_shutdown", - "thiserror", + "thiserror 1.0.69", "tokio", "tower-service", ] [[package]] name = "tari_shutdown" -version = "1.8.0-pre.0" -source = "git+https://github.com/tari-project/tari.git?branch=development#e61b5e2d172f782e953f351a81723713b150c57d" +version = "1.9.0-pre.0" +source = "git+https://github.com/tari-project/tari.git?branch=development#a75e0c6f1b51b61aa1576bf671bd0d74bd45490f" dependencies = [ "futures 0.3.31", ] [[package]] name = "tari_storage" -version = "1.8.0-pre.0" -source = "git+https://github.com/tari-project/tari.git?branch=development#e61b5e2d172f782e953f351a81723713b150c57d" +version = "1.9.0-pre.0" +source = "git+https://github.com/tari-project/tari.git?branch=development#a75e0c6f1b51b61aa1576bf671bd0d74bd45490f" dependencies = [ "bincode", "lmdb-zero", "log", "serde", - "thiserror", + "thiserror 1.0.69", ] [[package]] name = "tari_test_utils" -version = "1.8.0-pre.0" -source = "git+https://github.com/tari-project/tari.git?branch=development#e61b5e2d172f782e953f351a81723713b150c57d" +version = "1.9.0-pre.0" +source = "git+https://github.com/tari-project/tari.git?branch=development#a75e0c6f1b51b61aa1576bf671bd0d74bd45490f" dependencies = [ "futures 0.3.31", "rand 0.8.5", @@ -7168,97 +7285,84 @@ dependencies = [ [[package]] name = "tauri" -version = "1.8.1" +version = "2.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1bf327e247698d3f39af8aa99401c9708384290d1f5c544bf5d251d44c2fea22" +checksum = "e545de0a2dfe296fa67db208266cd397c5a55ae782da77973ef4c4fac90e9f2c" dependencies = [ "anyhow", - "base64 0.22.1", - "bytes 1.8.0", - "cocoa", - "dirs-next 2.0.0", + "bytes 1.9.0", + "dirs 5.0.1", "dunce", "embed_plist", - "encoding_rs", - "flate2", "futures-util", "getrandom 0.2.15", - "glib", "glob", "gtk", "heck 0.5.0", - "http 0.2.12", - "ico", - "ignore", - "indexmap 1.9.3", - "infer", + "http", + "image", + "jni", + "libc", "log", - "minisign-verify", - "objc", - "once_cell", - "open 3.2.0", - "os_info", - "os_pipe", + "mime", + "muda", + "objc2", + "objc2-app-kit", + "objc2-foundation", "percent-encoding", "plist", - "png", - "rand 0.8.5", "raw-window-handle", - "regex", - "reqwest 0.11.27", - "rfd", - "semver", + "reqwest", "serde", "serde_json", "serde_repr", "serialize-to-javascript", - "shared_child", - "state", - "sys-locale", - "tar", + "swift-rs", + "tauri-build", "tauri-macros", "tauri-runtime", "tauri-runtime-wry", "tauri-utils", - "tempfile", - "thiserror", - "time", + "thiserror 2.0.3", "tokio", + "tray-icon", "url", - "uuid", + "urlpattern", "webkit2gtk", "webview2-com", - "windows 0.39.0", - "zip 0.6.6", + "window-vibrancy", + "windows 0.58.0", ] [[package]] name = "tauri-build" -version = "1.5.5" +version = "2.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "586f3e677f940c8bb4f70c52eda05dc59b79e61543f1182de83516810bb8e35d" +checksum = "7bd2a4bcfaf5fb9f4be72520eefcb61ae565038f8ccba2a497d8c28f463b8c01" dependencies = [ "anyhow", "cargo_toml", - "dirs-next 2.0.0", + "dirs 5.0.1", + "glob", "heck 0.5.0", "json-patch", + "schemars", "semver", "serde", "serde_json", - "tauri-codegen", "tauri-utils", "tauri-winres", + "toml 0.8.19", "walkdir", ] [[package]] name = "tauri-codegen" -version = "1.4.5" +version = "2.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "93a9e3f5cebf779a63bf24903e714ec91196c307d8249a0008b882424328bcda" +checksum = "bf79faeecf301d3e969b1fae977039edb77a4c1f25cc0a961be298b54bff97cf" dependencies = [ - "base64 0.21.7", + "base64 0.22.1", "brotli", "ico", "json-patch", @@ -7266,101 +7370,218 @@ dependencies = [ "png", "proc-macro2", "quote", - "regex", "semver", "serde", "serde_json", "sha2", + "syn 2.0.89", "tauri-utils", - "thiserror", + "thiserror 2.0.3", "time", + "url", "uuid", "walkdir", ] [[package]] name = "tauri-macros" -version = "1.4.6" +version = "2.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d1d0e989f54fe06c5ef0875c5e19cf96453d099a0a774d5192ab47e80471cdab" +checksum = "c52027c8c5afb83166dacddc092ee8fff50772f9646d461d8c33ee887e447a03" dependencies = [ "heck 0.5.0", "proc-macro2", "quote", - "syn 1.0.109", + "syn 2.0.89", "tauri-codegen", "tauri-utils", ] +[[package]] +name = "tauri-plugin" +version = "2.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e753f2a30933a9bbf0a202fa47d7cc4a3401f06e8d6dcc53b79aa62954828c79" +dependencies = [ + "anyhow", + "glob", + "plist", + "schemars", + "serde", + "serde_json", + "tauri-utils", + "toml 0.8.19", + "walkdir", +] + +[[package]] +name = "tauri-plugin-os" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fbc5f23a86f37687c7f4fecfdc706b279087bc44f7a46702f7307ff1551ee03a" +dependencies = [ + "gethostname", + "log", + "os_info", + "serde", + "serde_json", + "serialize-to-javascript", + "sys-locale", + "tauri", + "tauri-plugin", + "thiserror 1.0.69", +] + +[[package]] +name = "tauri-plugin-process" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ae06a00087c148962a52814a2d7265b1a0505bced5ffb74f8c284a5f96a4d03d" +dependencies = [ + "tauri", + "tauri-plugin", +] + +[[package]] +name = "tauri-plugin-sentry" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dd62441cb95406e41c7fed4da6b24aedae52a24566133f4056dc9a1178404770" +dependencies = [ + "base64 0.22.1", + "schemars", + "sentry", + "sentry-rust-minidump", + "serde", + "tauri", + "tauri-plugin", + "thiserror 1.0.69", +] + +[[package]] +name = "tauri-plugin-shell" +version = "2.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0ad7880c5586b6b2104be451e3d7fc0f3800c84bda69e9ba81c828f87cb34267" +dependencies = [ + "encoding_rs", + "log", + "open", + "os_pipe", + "regex", + "schemars", + "serde", + "serde_json", + "shared_child", + "tauri", + "tauri-plugin", + "thiserror 1.0.69", + "tokio", +] + [[package]] name = "tauri-plugin-single-instance" -version = "0.0.0" -source = "git+https://github.com/tauri-apps/plugins-workspace?branch=v1#0a8484c52d74215bc4cbcc7fcb58e376f4fcd1f7" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a25ac834491d089699a2bc9266a662faf373c9f779f05a2235bc6e4d9e61769a" dependencies = [ "log", "serde", "serde_json", "tauri", - "thiserror", + "thiserror 1.0.69", "windows-sys 0.59.0", "zbus", ] +[[package]] +name = "tauri-plugin-updater" +version = "2.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1dd3d2fe0f02bf52eebb5a9d23b987fffac6684646ab6fd683d706dafb18da87" +dependencies = [ + "base64 0.22.1", + "dirs 5.0.1", + "flate2", + "futures-util", + "http", + "infer", + "minisign-verify", + "percent-encoding", + "reqwest", + "semver", + "serde", + "serde_json", + "tar", + "tauri", + "tauri-plugin", + "tempfile", + "thiserror 1.0.69", + "time", + "tokio", + "url", + "windows-sys 0.59.0", + "zip", +] + [[package]] name = "tauri-runtime" -version = "0.14.5" +version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f33fda7d213e239077fad52e96c6b734cecedb30c2382118b64f94cb5103ff3a" +checksum = "cce18d43f80d4aba3aa8a0c953bbe835f3d0f2370aca75e8dbb14bd4bab27958" dependencies = [ + "dpi", "gtk", - "http 0.2.12", - "http-range", - "rand 0.8.5", + "http", + "jni", "raw-window-handle", "serde", "serde_json", "tauri-utils", - "thiserror", + "thiserror 2.0.3", "url", - "uuid", - "webview2-com", - "windows 0.39.0", + "windows 0.58.0", ] [[package]] name = "tauri-runtime-wry" -version = "0.14.10" +version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "18c447dcd9b0f09c7dc4b752cc33e72788805bfd761fbda5692d30c48289efec" +checksum = "9f442a38863e10129ffe2cec7bd09c2dcf8a098a3a27801a476a304d5bb991d2" dependencies = [ - "cocoa", "gtk", + "http", + "jni", + "log", + "objc2", + "objc2-app-kit", + "objc2-foundation", "percent-encoding", - "rand 0.8.5", "raw-window-handle", + "softbuffer", + "tao", "tauri-runtime", "tauri-utils", - "uuid", + "url", "webkit2gtk", "webview2-com", - "windows 0.39.0", + "windows 0.58.0", "wry", ] [[package]] name = "tauri-utils" -version = "1.6.1" +version = "2.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "83a0c939e88d82903a0a7dfb28388b12a3c03504d6bd6086550edaa3b6d8beaa" +checksum = "9271a88f99b4adea0dc71d0baca4505475a0bbd139fb135f62958721aaa8fe54" dependencies = [ - "aes-gcm", "brotli", + "cargo_metadata", "ctor", "dunce", - "getrandom 0.2.15", "glob", - "heck 0.5.0", "html5ever", + "http", "infer", "json-patch", "kuchikiki", @@ -7369,15 +7590,20 @@ dependencies = [ "phf 0.11.2", "proc-macro2", "quote", + "regex", + "schemars", "semver", "serde", + "serde-untagged", "serde_json", "serde_with", - "serialize-to-javascript", - "thiserror", + "swift-rs", + "thiserror 2.0.3", + "toml 0.8.19", "url", + "urlpattern", + "uuid", "walkdir", - "windows-version", ] [[package]] @@ -7392,14 +7618,14 @@ dependencies = [ [[package]] name = "tempfile" -version = "3.13.0" +version = "3.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f0f2c9fc62d0beef6951ccffd757e241266a2c833136efbe35af6cd2567dca5b" +checksum = "28cce251fcbc87fac86a866eeb0d6c2d536fc16d06f184bb61aeae11aa4cee0c" dependencies = [ "cfg-if", - "fastrand 2.1.1", + "fastrand", "once_cell", - "rustix 0.38.39", + "rustix", "windows-sys 0.59.0", ] @@ -7431,22 +7657,42 @@ checksum = "8eaa81235c7058867fa8c0e7314f33dcce9c215f535d1913822a2b3f5e289f3c" [[package]] name = "thiserror" -version = "1.0.68" +version = "1.0.69" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6aaf5339b578ea85b50e080feb250a3e8ae8cfcdff9a461c9ec2904bc923f52" +dependencies = [ + "thiserror-impl 1.0.69", +] + +[[package]] +name = "thiserror" +version = "2.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "02dd99dc800bbb97186339685293e1cc5d9df1f8fae2d0aecd9ff1c77efea892" +checksum = "c006c85c7651b3cf2ada4584faa36773bd07bac24acfb39f3c431b36d7e667aa" dependencies = [ - "thiserror-impl", + "thiserror-impl 2.0.3", +] + +[[package]] +name = "thiserror-impl" +version = "1.0.69" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.89", ] [[package]] name = "thiserror-impl" -version = "1.0.68" +version = "2.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a7c61ec9a6f64d2793d8a45faba21efbe3ced62a886d44c36a009b2b519b4c7e" +checksum = "f077553d607adc1caf65430528a576c757a71ed73944b66ebb58ef2bbd243568" dependencies = [ "proc-macro2", "quote", - "syn 2.0.87", + "syn 2.0.89", ] [[package]] @@ -7479,16 +7725,6 @@ dependencies = [ "winapi", ] -[[package]] -name = "thread_local" -version = "1.1.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8b9ef9bad013ada3808854ceac7b46812a6465ba368859a37e2100283d2d719c" -dependencies = [ - "cfg-if", - "once_cell", -] - [[package]] name = "time" version = "0.3.36" @@ -7496,7 +7732,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5dfd88e563464686c916c7e46e623e520ddc6d79fa6641390f2e3fa86e83e885" dependencies = [ "deranged", - "itoa 1.0.11", + "itoa 1.0.14", "num-conv", "powerfmt", "serde", @@ -7556,18 +7792,18 @@ checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" [[package]] name = "tokio" -version = "1.41.0" +version = "1.41.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "145f3413504347a2be84393cc8a7d2fb4d863b375909ea59f2158261aa258bbb" +checksum = "22cfb5bee7a6a52939ca9224d6ac897bb669134078daa8735560897f69de4d33" dependencies = [ "backtrace", - "bytes 1.8.0", + "bytes 1.9.0", "libc", "mio", "parking_lot", "pin-project-lite", "signal-hook-registry", - "socket2 0.5.7", + "socket2", "tokio-macros", "windows-sys 0.52.0", ] @@ -7580,7 +7816,7 @@ checksum = "693d596312e88961bc67d7f1f97af8a70227d9f90c31bba5806eec004978d752" dependencies = [ "proc-macro2", "quote", - "syn 2.0.87", + "syn 2.0.89", ] [[package]] @@ -7622,7 +7858,7 @@ version = "0.6.10" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "36943ee01a6d67977dd3f84a5a1d2efeb4ada3a1ae771cadfaa535d9d9fc6507" dependencies = [ - "bytes 1.8.0", + "bytes 1.9.0", "futures-core", "futures-io", "futures-sink", @@ -7637,7 +7873,7 @@ version = "0.7.12" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "61e7c3654c13bcd040d4a03abee2c75b1d14a37b423cf5a813ceae1cc903ec6a" dependencies = [ - "bytes 1.8.0", + "bytes 1.9.0", "futures-core", "futures-io", "futures-sink", @@ -7689,13 +7925,24 @@ dependencies = [ [[package]] name = "toml_edit" -version = "0.19.15" +version = "0.19.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1b5bb770da30e5cbfde35a2d7b9b8a2c4b8ef89548a7a6aeab5c9a576e3e7421" +dependencies = [ + "indexmap 2.6.0", + "serde", + "serde_spanned", + "toml_datetime", + "winnow 0.5.40", +] + +[[package]] +name = "toml_edit" +version = "0.20.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1b5bb770da30e5cbfde35a2d7b9b8a2c4b8ef89548a7a6aeab5c9a576e3e7421" +checksum = "70f427fce4d84c72b5b732388bf4a9f4531b53f74e2887e3ecb2481f68f66d81" dependencies = [ "indexmap 2.6.0", - "serde", - "serde_spanned", "toml_datetime", "winnow 0.5.40", ] @@ -7723,19 +7970,19 @@ dependencies = [ "async-trait", "axum", "base64 0.22.1", - "bytes 1.8.0", - "h2 0.4.6", - "http 1.1.0", - "http-body 1.0.1", + "bytes 1.9.0", + "h2", + "http", + "http-body", "http-body-util", - "hyper 1.5.0", + "hyper", "hyper-timeout", "hyper-util", "percent-encoding", "pin-project 1.1.7", "prost 0.13.3", - "rustls-pemfile 2.2.0", - "socket2 0.5.7", + "rustls-pemfile", + "socket2", "tokio", "tokio-rustls", "tokio-stream", @@ -7756,7 +8003,7 @@ dependencies = [ "prost-build 0.13.3", "prost-types 0.13.3", "quote", - "syn 2.0.87", + "syn 2.0.89", ] [[package]] @@ -7808,9 +8055,9 @@ checksum = "8df9b6e13f2d32c91b9bd719c00d1958837bc7dec474d94952798cc8e69eeec3" [[package]] name = "tracing" -version = "0.1.40" +version = "0.1.41" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c3523ab5a71916ccf420eebdf5521fcef02141234bbc0b8a49f2fdc4544364ef" +checksum = "784e0ac535deb450455cbfa28a6f0df145ea1bb7ae51b821cf5e7927fdcfbdd0" dependencies = [ "log", "pin-project-lite", @@ -7820,52 +8067,53 @@ dependencies = [ [[package]] name = "tracing-attributes" -version = "0.1.27" +version = "0.1.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7" +checksum = "395ae124c09f9e6918a2310af6038fba074bcf474ac352496d5910dd59a2226d" dependencies = [ "proc-macro2", "quote", - "syn 2.0.87", + "syn 2.0.89", ] [[package]] name = "tracing-core" -version = "0.1.32" +version = "0.1.33" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c06d3da6113f116aaee68e4d601191614c9053067f9ab7f6edbcb161237daa54" +checksum = "e672c95779cf947c5311f83787af4fa8fffd12fb27e4993211a84bdfd9610f9c" dependencies = [ "once_cell", "valuable", ] [[package]] -name = "tracing-log" -version = "0.2.0" +name = "tracing-subscriber" +version = "0.3.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ee855f1f400bd0e5c02d150ae5de3840039a3f54b025156404e34c23c03f47c3" +checksum = "e8189decb5ac0fa7bc8b96b7cb9b2701d60d48805aca84a238004d665fcc4008" dependencies = [ - "log", - "once_cell", "tracing-core", ] [[package]] -name = "tracing-subscriber" -version = "0.3.18" +name = "tray-icon" +version = "0.19.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ad0f048c97dbd9faa9b7df56362b8ebcaa52adb06b498c050d2f4e32f90a7a8b" +checksum = "d48a05076dd272615d03033bf04f480199f7d1b66a8ac64d75c625fc4a70c06b" dependencies = [ - "matchers", - "nu-ansi-term", + "core-graphics", + "crossbeam-channel", + "dirs 5.0.1", + "libappindicator", + "muda", + "objc2", + "objc2-app-kit", + "objc2-foundation", "once_cell", - "regex", - "sharded-slab", - "smallvec", - "thread_local", - "tracing", - "tracing-core", - "tracing-log", + "png", + "serde", + "thiserror 1.0.69", + "windows-sys 0.59.0", ] [[package]] @@ -7874,6 +8122,12 @@ version = "0.2.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e421abadd41a4225275504ea4d6566923418b7f05506fbc9c0fe86ba7396114b" +[[package]] +name = "typeid" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0e13db2e0ccd5e14a544e8a246ba2312cd25223f616442d7f2cb0e3db614236e" + [[package]] name = "typemap-ors" version = "1.0.0" @@ -7904,7 +8158,7 @@ version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "89daebc3e6fd160ac4aa9fc8b3bf71e1f74fbf92367ae71fb83a037e8bf164b9" dependencies = [ - "memoffset 0.9.1", + "memoffset", "tempfile", "winapi", ] @@ -7930,6 +8184,47 @@ dependencies = [ "libc", ] +[[package]] +name = "unic-char-property" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a8c57a407d9b6fa02b4795eb81c5b6652060a15a7903ea981f3d723e6c0be221" +dependencies = [ + "unic-char-range", +] + +[[package]] +name = "unic-char-range" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0398022d5f700414f6b899e10b8348231abf9173fa93144cbc1a43b9793c1fbc" + +[[package]] +name = "unic-common" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "80d7ff825a6a654ee85a63e80f92f054f904f21e7d12da4e22f9834a4aaa35bc" + +[[package]] +name = "unic-ucd-ident" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e230a37c0381caa9219d67cf063aa3a375ffed5bf541a452db16e744bdab6987" +dependencies = [ + "unic-char-property", + "unic-char-range", + "unic-ucd-version", +] + +[[package]] +name = "unic-ucd-version" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "96bd2f2237fe450fcd0a1d2f5f4e91711124f7857ba2e964247776ebeeb7b0c4" +dependencies = [ + "unic-common", +] + [[package]] name = "unicase" version = "2.8.0" @@ -7944,9 +8239,9 @@ checksum = "5ab17db44d7388991a428b2ee655ce0c212e862eff1768a455c58f9aad6e7893" [[package]] name = "unicode-ident" -version = "1.0.13" +version = "1.0.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e91b56cd4cadaeb79bbf1a5645f6b4f8dc5bde8834ad5894a8db35fda9efa1fe" +checksum = "adb9e6ca4f869e1180728b7950e35922a7fc6397f7b641499e8f3ef06e50dc83" [[package]] name = "unicode-normalization" @@ -8014,9 +8309,9 @@ checksum = "8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1" [[package]] name = "ureq" -version = "2.10.1" +version = "2.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b74fc6b57825be3373f7054754755f03ac3a8f5d70015ccad699ba2029956f4a" +checksum = "3193f92e105038f98ae68af40c008e3c94f2f046926e0f95e6c835dc6459bac8" dependencies = [ "base64 0.22.1", "log", @@ -8027,9 +8322,9 @@ dependencies = [ [[package]] name = "url" -version = "2.5.3" +version = "2.5.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8d157f1b96d14500ffdc1f10ba712e780825526c03d9a49b4d0324b0d9113ada" +checksum = "32f8b686cadd1473f4bd0117a5d28d36b1ade384ea9b5069a1c40aefed7fda60" dependencies = [ "form_urlencoded", "idna 1.0.3", @@ -8037,6 +8332,18 @@ dependencies = [ "serde", ] +[[package]] +name = "urlpattern" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "70acd30e3aa1450bc2eece896ce2ad0d178e9c079493819301573dae3c37ba6d" +dependencies = [ + "regex", + "serde", + "unic-ucd-ident", + "url", +] + [[package]] name = "utf-8" version = "0.7.6" @@ -8083,12 +8390,6 @@ version = "0.2.15" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426" -[[package]] -name = "version-compare" -version = "0.0.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1c18c859eead79d8b95d09e4678566e8d70105c4e7b251f707a03df32442661b" - [[package]] name = "version-compare" version = "0.2.0" @@ -8141,12 +8442,6 @@ dependencies = [ "quote", ] -[[package]] -name = "waker-fn" -version = "1.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "317211a0dc0ceedd78fb2ca9a44aed3d7b9b26f81870d485c07122b4350673b7" - [[package]] name = "walkdir" version = "2.5.0" @@ -8200,7 +8495,7 @@ dependencies = [ "once_cell", "proc-macro2", "quote", - "syn 2.0.87", + "syn 2.0.89", "wasm-bindgen-shared", ] @@ -8234,7 +8529,7 @@ checksum = "26c6ab57572f7a24a4985830b120de1594465e5d500f24afe89e16b4e833ef68" dependencies = [ "proc-macro2", "quote", - "syn 2.0.87", + "syn 2.0.89", "wasm-bindgen-backend", "wasm-bindgen-shared", ] @@ -8280,9 +8575,9 @@ dependencies = [ [[package]] name = "webkit2gtk" -version = "0.18.2" +version = "2.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b8f859735e4a452aeb28c6c56a852967a8a76c8eb1cc32dbf931ad28a13d6370" +checksum = "76b1bc1e54c581da1e9f179d0b38512ba358fb1af2d634a1affe42e37172361a" dependencies = [ "bitflags 1.3.2", "cairo-rs", @@ -8298,20 +8593,18 @@ dependencies = [ "javascriptcore-rs", "libc", "once_cell", - "soup2", + "soup3", "webkit2gtk-sys", ] [[package]] name = "webkit2gtk-sys" -version = "0.18.0" +version = "2.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4d76ca6ecc47aeba01ec61e480139dda143796abcae6f83bcddf50d6b5b1dcf3" +checksum = "62daa38afc514d1f8f12b8693d30d5993ff77ced33ce30cd04deebc267a6d57c" dependencies = [ - "atk-sys", "bitflags 1.3.2", "cairo-sys-rs", - "gdk-pixbuf-sys", "gdk-sys", "gio-sys", "glib-sys", @@ -8319,57 +8612,54 @@ dependencies = [ "gtk-sys", "javascriptcore-rs-sys", "libc", - "pango-sys", "pkg-config", - "soup2-sys", - "system-deps 6.2.2", + "soup3-sys", + "system-deps", ] [[package]] name = "webpki-roots" -version = "0.26.6" +version = "0.26.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "841c67bff177718f1d4dfefde8d8f0e78f9b6589319ba88312f567fc5841a958" +checksum = "5d642ff16b7e79272ae451b7322067cdc17cadf68c23264be9d94a32319efe7e" dependencies = [ "rustls-pki-types", ] [[package]] name = "webview2-com" -version = "0.19.1" +version = "0.33.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b4a769c9f1a64a8734bde70caafac2b96cada12cd4aefa49196b3a386b8b4178" +checksum = "6f61ff3d9d0ee4efcb461b14eb3acfda2702d10dc329f339303fc3e57215ae2c" dependencies = [ "webview2-com-macros", "webview2-com-sys", - "windows 0.39.0", - "windows-implement 0.39.0", + "windows 0.58.0", + "windows-core 0.58.0", + "windows-implement 0.58.0", + "windows-interface 0.58.0", ] [[package]] name = "webview2-com-macros" -version = "0.6.0" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eaebe196c01691db62e9e4ca52c5ef1e4fd837dcae27dae3ada599b5a8fd05ac" +checksum = "1d228f15bba3b9d56dde8bddbee66fa24545bd17b48d5128ccf4a8742b18e431" dependencies = [ "proc-macro2", "quote", - "syn 1.0.109", + "syn 2.0.89", ] [[package]] name = "webview2-com-sys" -version = "0.19.0" +version = "0.33.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aac48ef20ddf657755fdcda8dfed2a7b4fc7e4581acce6fe9b88c3d64f29dee7" +checksum = "a3a3e2eeb58f82361c93f9777014668eb3d07e7d174ee4c819575a9208011886" dependencies = [ - "regex", - "serde", - "serde_json", - "thiserror", - "windows 0.39.0", - "windows-bindgen", - "windows-metadata", + "thiserror 1.0.69", + "windows 0.58.0", + "windows-core 0.58.0", ] [[package]] @@ -8381,7 +8671,7 @@ dependencies = [ "either", "home", "once_cell", - "rustix 0.38.39", + "rustix", ] [[package]] @@ -8422,30 +8712,17 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" [[package]] -name = "windows" -version = "0.37.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "57b543186b344cc61c85b5aab0d2e3adf4e0f99bc076eff9aa5927bcc0b8a647" -dependencies = [ - "windows_aarch64_msvc 0.37.0", - "windows_i686_gnu 0.37.0", - "windows_i686_msvc 0.37.0", - "windows_x86_64_gnu 0.37.0", - "windows_x86_64_msvc 0.37.0", -] - -[[package]] -name = "windows" -version = "0.39.0" +name = "window-vibrancy" +version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1c4bd0a50ac6020f65184721f758dba47bb9fbc2133df715ec74a237b26794a" +checksum = "3ea403deff7b51fff19e261330f71608ff2cdef5721d72b64180bb95be7c4150" dependencies = [ - "windows-implement 0.39.0", - "windows_aarch64_msvc 0.39.0", - "windows_i686_gnu 0.39.0", - "windows_i686_msvc 0.39.0", - "windows_x86_64_gnu 0.39.0", - "windows_x86_64_msvc 0.39.0", + "objc2", + "objc2-app-kit", + "objc2-foundation", + "raw-window-handle", + "windows-sys 0.59.0", + "windows-version", ] [[package]] @@ -8478,13 +8755,13 @@ dependencies = [ ] [[package]] -name = "windows-bindgen" -version = "0.39.0" +name = "windows" +version = "0.58.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "68003dbd0e38abc0fb85b939240f4bce37c43a5981d3df37ccbaaa981b47cb41" +checksum = "dd04d41d93c4992d421894c18c8b43496aa748dd4c081bac0dc93eb0489272b6" dependencies = [ - "windows-metadata", - "windows-tokens", + "windows-core 0.58.0", + "windows-targets 0.52.6", ] [[package]] @@ -8503,19 +8780,22 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d2ed2439a290666cd67ecce2b0ffaad89c2a56b976b736e6ece670297897832d" dependencies = [ "windows-implement 0.57.0", - "windows-interface", + "windows-interface 0.57.0", "windows-result 0.1.2", "windows-targets 0.52.6", ] [[package]] -name = "windows-implement" -version = "0.39.0" +name = "windows-core" +version = "0.58.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ba01f98f509cb5dc05f4e5fc95e535f78260f15fea8fe1a8abdd08f774f1cee7" +checksum = "6ba6d44ec8c2591c134257ce647b7ea6b20335bf6379a27dac5f1641fcf59f99" dependencies = [ - "syn 1.0.109", - "windows-tokens", + "windows-implement 0.58.0", + "windows-interface 0.58.0", + "windows-result 0.2.0", + "windows-strings", + "windows-targets 0.52.6", ] [[package]] @@ -8526,7 +8806,18 @@ checksum = "9107ddc059d5b6fbfbffdfa7a7fe3e22a226def0b2608f72e9d552763d3e1ad7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.87", + "syn 2.0.89", +] + +[[package]] +name = "windows-implement" +version = "0.58.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2bbd5b46c938e506ecbce286b6628a02171d56153ba733b6c741fc627ec9579b" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.89", ] [[package]] @@ -8537,14 +8828,19 @@ checksum = "29bee4b38ea3cde66011baa44dba677c432a78593e202392d1e9070cf2a7fca7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.87", + "syn 2.0.89", ] [[package]] -name = "windows-metadata" -version = "0.39.0" +name = "windows-interface" +version = "0.58.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9ee5e275231f07c6e240d14f34e1b635bf1faa1c76c57cfd59a5cdb9848e4278" +checksum = "053c4c462dc91d3b1504c6fe5a726dd15e216ba718e84a0e46a88fbe5ded3515" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.89", +] [[package]] name = "windows-registry" @@ -8587,17 +8883,11 @@ dependencies = [ [[package]] name = "windows-sys" -version = "0.42.0" +version = "0.45.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5a3e1820f08b8513f676f7ab6c1f99ff312fb97b553d30ff4dd86f9f15728aa7" +checksum = "75283be5efb2831d37ea142365f009c02ec203cd29a3ebecbc093d52315b66d0" dependencies = [ - "windows_aarch64_gnullvm 0.42.2", - "windows_aarch64_msvc 0.42.2", - "windows_i686_gnu 0.42.2", - "windows_i686_msvc 0.42.2", - "windows_x86_64_gnu 0.42.2", - "windows_x86_64_gnullvm 0.42.2", - "windows_x86_64_msvc 0.42.2", + "windows-targets 0.42.2", ] [[package]] @@ -8627,6 +8917,21 @@ dependencies = [ "windows-targets 0.52.6", ] +[[package]] +name = "windows-targets" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e5180c00cd44c9b1c88adb3693291f1cd93605ded80c250a75d472756b4d071" +dependencies = [ + "windows_aarch64_gnullvm 0.42.2", + "windows_aarch64_msvc 0.42.2", + "windows_i686_gnu 0.42.2", + "windows_i686_msvc 0.42.2", + "windows_x86_64_gnu 0.42.2", + "windows_x86_64_gnullvm 0.42.2", + "windows_x86_64_msvc 0.42.2", +] + [[package]] name = "windows-targets" version = "0.48.5" @@ -8658,12 +8963,6 @@ dependencies = [ "windows_x86_64_msvc 0.52.6", ] -[[package]] -name = "windows-tokens" -version = "0.39.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f838de2fe15fe6bac988e74b798f26499a8b21a9d97edec321e79b28d1d7f597" - [[package]] name = "windows-version" version = "0.1.1" @@ -8691,18 +8990,6 @@ version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3" -[[package]] -name = "windows_aarch64_msvc" -version = "0.37.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2623277cb2d1c216ba3b578c0f3cf9cdebeddb6e66b1b218bb33596ea7769c3a" - -[[package]] -name = "windows_aarch64_msvc" -version = "0.39.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ec7711666096bd4096ffa835238905bb33fb87267910e154b18b44eaabb340f2" - [[package]] name = "windows_aarch64_msvc" version = "0.42.2" @@ -8721,18 +9008,6 @@ version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469" -[[package]] -name = "windows_i686_gnu" -version = "0.37.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d3925fd0b0b804730d44d4b6278c50f9699703ec49bcd628020f46f4ba07d9e1" - -[[package]] -name = "windows_i686_gnu" -version = "0.39.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "763fc57100a5f7042e3057e7e8d9bdd7860d330070251a73d003563a3bb49e1b" - [[package]] name = "windows_i686_gnu" version = "0.42.2" @@ -8757,18 +9032,6 @@ version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66" -[[package]] -name = "windows_i686_msvc" -version = "0.37.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ce907ac74fe331b524c1298683efbf598bb031bc84d5e274db2083696d07c57c" - -[[package]] -name = "windows_i686_msvc" -version = "0.39.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7bc7cbfe58828921e10a9f446fcaaf649204dcfe6c1ddd712c5eebae6bda1106" - [[package]] name = "windows_i686_msvc" version = "0.42.2" @@ -8787,18 +9050,6 @@ version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66" -[[package]] -name = "windows_x86_64_gnu" -version = "0.37.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2babfba0828f2e6b32457d5341427dcbb577ceef556273229959ac23a10af33d" - -[[package]] -name = "windows_x86_64_gnu" -version = "0.39.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6868c165637d653ae1e8dc4d82c25d4f97dd6605eaa8d784b5c6e0ab2a252b65" - [[package]] name = "windows_x86_64_gnu" version = "0.42.2" @@ -8835,18 +9086,6 @@ version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d" -[[package]] -name = "windows_x86_64_msvc" -version = "0.37.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f4dd6dc7df2d84cf7b33822ed5b86318fb1781948e9663bacd047fc9dd52259d" - -[[package]] -name = "windows_x86_64_msvc" -version = "0.39.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5e4d40883ae9cae962787ca76ba76390ffa29214667a111db9e0a1ad8377e809" - [[package]] name = "windows_x86_64_msvc" version = "0.42.2" @@ -8921,7 +9160,7 @@ dependencies = [ "darling", "proc-macro2", "quote", - "syn 2.0.87", + "syn 2.0.89", ] [[package]] @@ -8938,40 +9177,45 @@ checksum = "1e9df38ee2d2c3c5948ea468a8406ff0db0b29ae1ffde1bcf20ef305bcc95c51" [[package]] name = "wry" -version = "0.24.11" +version = "0.47.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c55c80b12287eb1ff7c365fc2f7a5037cb6181bd44c9fce81c8d1cf7605ffad6" +checksum = "61ce51277d65170f6379d8cda935c80e3c2d1f0ff712a123c8bddb11b31a4b73" dependencies = [ - "base64 0.13.1", - "block", - "cocoa", - "core-graphics", + "base64 0.22.1", + "block2", + "cookie", "crossbeam-channel", + "dpi", "dunce", - "gdk", - "gio", - "glib", + "gdkx11", "gtk", "html5ever", - "http 0.2.12", + "http", + "javascriptcore-rs", + "jni", "kuchikiki", "libc", - "log", - "objc", - "objc_id", + "ndk", + "objc2", + "objc2-app-kit", + "objc2-foundation", + "objc2-ui-kit", + "objc2-web-kit", "once_cell", - "serde", - "serde_json", + "percent-encoding", + "raw-window-handle", "sha2", - "soup2", - "tao", - "thiserror", + "soup3", + "tao-macros", + "thiserror 1.0.69", "url", "webkit2gtk", "webkit2gtk-sys", "webview2-com", - "windows 0.39.0", - "windows-implement 0.39.0", + "windows 0.58.0", + "windows-core 0.58.0", + "windows-version", + "x11-dl", ] [[package]] @@ -9011,8 +9255,18 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8da84f1a25939b27f6820d92aed108f83ff920fdf11a7b19366c27c4cda81d4f" dependencies = [ "libc", - "linux-raw-sys 0.4.14", - "rustix 0.38.39", + "linux-raw-sys", + "rustix", +] + +[[package]] +name = "xdg-home" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec1cdab258fb55c0da61328dc52c8764709b249011b2cad0454c72f0bf10a1f6" +dependencies = [ + "libc", + "windows-sys 0.59.0", ] [[package]] @@ -9026,9 +9280,9 @@ dependencies = [ [[package]] name = "yamux" -version = "0.13.3" +version = "0.13.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a31b5e376a8b012bee9c423acdbb835fc34d45001cfa3106236a624e4b738028" +checksum = "17610762a1207ee816c6fadc29220904753648aba0a9ed61c7b8336e80a559c4" dependencies = [ "futures 0.3.31", "log", @@ -9051,9 +9305,9 @@ dependencies = [ [[package]] name = "yoke" -version = "0.7.4" +version = "0.7.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6c5b1314b079b0930c31e3af543d8ee1757b1951ae1e1565ec704403a7240ca5" +checksum = "120e6aef9aa629e3d4f52dc8cc43a015c7724194c97dfaf45180d2daf2b77f40" dependencies = [ "serde", "stable_deref_trait", @@ -9063,50 +9317,49 @@ dependencies = [ [[package]] name = "yoke-derive" -version = "0.7.4" +version = "0.7.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "28cc31741b18cb6f1d5ff12f5b7523e3d6eb0852bbbad19d73905511d9849b95" +checksum = "2380878cad4ac9aac1e2435f3eb4020e8374b5f13c296cb75b4620ff8e229154" dependencies = [ "proc-macro2", "quote", - "syn 2.0.87", + "syn 2.0.89", "synstructure 0.13.1", ] [[package]] name = "zbus" -version = "3.3.0" +version = "4.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "41ce2de393c874ba871292e881bf3c13a0d5eb38170ebab2e50b4c410eaa222b" +checksum = "bb97012beadd29e654708a0fdb4c84bc046f537aecfde2c3ee0a9e4b4d48c725" dependencies = [ "async-broadcast", - "async-channel", "async-executor", + "async-fs", "async-io", "async-lock", - "async-recursion 0.3.2", + "async-process", + "async-recursion", "async-task", "async-trait", - "byteorder", - "derivative", - "dirs", + "blocking", "enumflags2", "event-listener", "futures-core", "futures-sink", "futures-util", "hex", - "nix 0.24.3", - "once_cell", + "nix 0.29.0", "ordered-stream", "rand 0.8.5", "serde", "serde_repr", - "sha1 0.6.1", + "sha1", "static_assertions", "tracing", "uds_windows", - "winapi", + "windows-sys 0.52.0", + "xdg-home", "zbus_macros", "zbus_names", "zvariant", @@ -9114,22 +9367,22 @@ dependencies = [ [[package]] name = "zbus_macros" -version = "3.3.0" +version = "4.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a13d08f5dc6cf725b693cb6ceacd43cd430ec0664a879188f29e7d7dcd98f96d" +checksum = "267db9407081e90bbfa46d841d3cbc60f59c0351838c4bc65199ecd79ab1983e" dependencies = [ - "proc-macro-crate 1.1.3", + "proc-macro-crate 3.2.0", "proc-macro2", "quote", - "regex", - "syn 1.0.109", + "syn 2.0.89", + "zvariant_utils", ] [[package]] name = "zbus_names" -version = "2.2.0" +version = "3.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "41a408fd8a352695690f53906dc7fd036be924ec51ea5e05666ff42685ed0af5" +checksum = "4b9b1fef7d021261cc16cba64c351d291b715febe0fa10dc3a443ac5a5022e6c" dependencies = [ "serde", "static_assertions", @@ -9154,27 +9407,27 @@ checksum = "fa4f8080344d4671fb4e831a13ad1e68092748387dfc4f55e356242fae12ce3e" dependencies = [ "proc-macro2", "quote", - "syn 2.0.87", + "syn 2.0.89", ] [[package]] name = "zerofrom" -version = "0.1.4" +version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "91ec111ce797d0e0784a1116d0ddcdbea84322cd79e5d5ad173daeba4f93ab55" +checksum = "cff3ee08c995dee1859d998dea82f7374f2826091dd9cd47def953cae446cd2e" dependencies = [ "zerofrom-derive", ] [[package]] name = "zerofrom-derive" -version = "0.1.4" +version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0ea7b4a3637ea8669cedf0f1fd5c286a17f3de97b8dd5a70a6c167a1730e63a5" +checksum = "595eed982f7d355beb85837f651fa22e90b3c044842dc7f2c2842c086f295808" dependencies = [ "proc-macro2", "quote", - "syn 2.0.87", + "syn 2.0.89", "synstructure 0.13.1", ] @@ -9195,7 +9448,7 @@ checksum = "ce36e65b0d2999d2aafac989fb249189a141aee1f53c612c1f37d72631959f69" dependencies = [ "proc-macro2", "quote", - "syn 2.0.87", + "syn 2.0.89", ] [[package]] @@ -9217,25 +9470,14 @@ checksum = "6eafa6dfb17584ea3e2bd6e76e0cc15ad7af12b09abdd1ca55961bed9b1063c6" dependencies = [ "proc-macro2", "quote", - "syn 2.0.87", -] - -[[package]] -name = "zip" -version = "0.6.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "760394e246e4c28189f19d488c058bf16f564016aefac5d32bb1f3b51d5e9261" -dependencies = [ - "byteorder", - "crc32fast", - "crossbeam-utils", + "syn 2.0.89", ] [[package]] name = "zip" -version = "2.2.0" +version = "2.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dc5e4288ea4057ae23afc69a4472434a87a2495cafce6632fd1c4ec9f5cf3494" +checksum = "99d52293fc86ea7cf13971b3bb81eb21683636e7ae24c729cdaf1b7c4157a352" dependencies = [ "aes", "arbitrary", @@ -9252,8 +9494,8 @@ dependencies = [ "memchr", "pbkdf2", "rand 0.8.5", - "sha1 0.10.6", - "thiserror", + "sha1", + "thiserror 2.0.3", "time", "zeroize", "zopfli", @@ -9304,13 +9546,12 @@ dependencies = [ [[package]] name = "zvariant" -version = "3.7.1" +version = "4.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b794fb7f59af4105697b0449ba31731ee5dbb3e773a17dbdf3d36206ea1b1644" +checksum = "2084290ab9a1c471c38fc524945837734fbf124487e105daec2bb57fd48c81fe" dependencies = [ - "byteorder", + "endi", "enumflags2", - "libc", "serde", "static_assertions", "zvariant_derive", @@ -9318,12 +9559,24 @@ dependencies = [ [[package]] name = "zvariant_derive" -version = "3.7.1" +version = "4.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dd58d4b6c8e26d3dd2149c8c40c6613ef6451b9885ff1296d1ac86c388351a54" +checksum = "73e2ba546bda683a90652bac4a279bc146adad1386f25379cf73200d2002c449" dependencies = [ - "proc-macro-crate 1.1.3", + "proc-macro-crate 3.2.0", "proc-macro2", "quote", - "syn 1.0.109", + "syn 2.0.89", + "zvariant_utils", +] + +[[package]] +name = "zvariant_utils" +version = "2.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c51bcff7cc3dbb5055396bcf774748c3dab426b4b8659046963523cee4808340" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.89", ] diff --git a/src-tauri/Cargo.toml b/src-tauri/Cargo.toml index 628db7845..1c6638ad8 100644 --- a/src-tauri/Cargo.toml +++ b/src-tauri/Cargo.toml @@ -10,7 +10,7 @@ version = "0.8.7" [build-dependencies] embed-resource = "2.5.0" -tauri-build = { version = "1.5.5", features = ["isolation"] } +tauri-build = { version = "2", features = [] } [dependencies] anyhow = "1" @@ -27,7 +27,6 @@ fix-path-env = { git = "https://github.com/tauri-apps/fix-path-env-rs" } flate2 = "1.0.30" futures-lite = "2.3.0" futures-util = "0.3.30" -human_format = "1.1.0" jsonwebtoken = "9.3.0" keyring = { version = "3.0.5", features = [ "windows-native", @@ -51,8 +50,6 @@ regex = "1.10.5" reqwest = { version = "0.12.5", features = ["stream", "json", "multipart"] } sanitize-filename = "0.5" semver = "1.0.23" -sentry = { version = "0.34.0", features = ["anyhow"] } -sentry-tauri = "0.3.0" serde = { version = "1", features = ["derive"] } serde_cbor = "0.11.2" serde_json = "1" @@ -66,37 +63,39 @@ tari_common_types = { git = "https://github.com/tari-project/tari.git", branch = tari_core = { git = "https://github.com/tari-project/tari.git", branch = "development", features = [ "transactions", ] } + +# This crates are temporary fix to solve issue with building tari app +hickory-client = { version = "=0.25.0-alpha.2", features = [ + "dns-over-rustls", + "dnssec-openssl", +] } +hickory-proto = { version = "=0.25.0-alpha.2" } +openssl = { version = "0.10", features = ["vendored"] } +#======================================================================= + tari_crypto = "0.21.0" tari_key_manager = { git = "https://github.com/tari-project/tari.git", branch = "development" } tari_shutdown = { git = "https://github.com/tari-project/tari.git", branch = "development" } tari_utilities = "0.8.0" -tauri = { version = "1.8.0", features = [ - "window-unmaximize", - "window-unminimize", - "os-all", - "system-tray", - "updater", - "window-close", - "window-hide", - "window-maximize", - "window-minimize", - "window-show", - "window-start-dragging", - "window-maximize", - "window-close", +tauri = { version = "2", features = [ "macos-private-api", - "isolation", - "shell-open", - "icon-ico", - "icon-png", - "process-command-api", + "image-png", + "image-ico", + "tray-icon", + ] } -tauri-plugin-single-instance = { git = "https://github.com/tauri-apps/plugins-workspace", branch = "v1" } +tauri-plugin-os = "2" +tauri-plugin-sentry = "0.2.0" +tauri-plugin-shell = "2" +tauri-plugin-single-instance = "^2" +tauri-plugin-updater = "^2" thiserror = "1.0.26" tokio = { version = "1", features = ["full"] } tokio-util = { version = "0.7.11", features = ["compat"] } xz2 = { version = "0.1.7", features = ["static"] } # static bind lzma zip = "2.2.0" +dirs = "5.0.1" +tauri-plugin-process = "2" [target.'cfg(windows)'.dependencies] winreg = "0.52.0" @@ -108,7 +107,6 @@ libsqlite3-sys = { version = "0.25.1", features = ["bundled"] } log = "0.4.22" nvml-wrapper = "0.10.0" rand = "0.8.5" -sentry-tauri = "0.3.0" sys-locale = "0.3.1" # tonic = "0.12.0" @@ -122,4 +120,12 @@ release-ci = ["tauri/custom-protocol"] release-ci-beta = ["tauri/custom-protocol"] [package.metadata.cargo-machete] -ignored = ["log4rs", "xz2", "libsqlite3-sys", "minotari_wallet_grpc_client"] +ignored = [ + "hickory-client", + "hickory-proto", + "openssl", + "libsqlite3-sys", + "log4rs", + "minotari_wallet_grpc_client", + "xz2", +] diff --git a/src-tauri/capabilities/default.json b/src-tauri/capabilities/default.json new file mode 100644 index 000000000..540160433 --- /dev/null +++ b/src-tauri/capabilities/default.json @@ -0,0 +1,21 @@ +{ + "identifier": "default", + "windows": ["main"], + "permissions": [ + "core:path:default", + "core:event:default", + "core:window:default", + "core:app:default", + "core:resources:default", + "core:menu:default", + "core:tray:default", + "core:window:allow-close", + "core:window:allow-destroy", + "core:window:allow-minimize", + "core:window:allow-unminimize", + "shell:allow-open", + "sentry:default", + "process:allow-restart", + "process:default" + ] +} diff --git a/src-tauri/capabilities/desktop.json b/src-tauri/capabilities/desktop.json new file mode 100644 index 000000000..00ff1a697 --- /dev/null +++ b/src-tauri/capabilities/desktop.json @@ -0,0 +1,11 @@ +{ + "identifier": "desktop-capability", + "platforms": [ + "macOS", + "windows", + "linux" + ], + "permissions": [ + "updater:default" + ] +} \ No newline at end of file diff --git a/src-tauri/capabilities/migrated.json b/src-tauri/capabilities/migrated.json new file mode 100644 index 000000000..2018241e2 --- /dev/null +++ b/src-tauri/capabilities/migrated.json @@ -0,0 +1,13 @@ +{ + "identifier": "migrated", + "description": "permissions that were migrated from v1", + "local": true, + "windows": [ + "main" + ], + "permissions": [ + "core:default", + "updater:default", + "os:default" + ] +} \ No newline at end of file diff --git a/src-tauri/src/binaries/adapter_github.rs b/src-tauri/src/binaries/adapter_github.rs index bc7f09079..3d959ca50 100644 --- a/src-tauri/src/binaries/adapter_github.rs +++ b/src-tauri/src/binaries/adapter_github.rs @@ -5,7 +5,6 @@ use async_trait::async_trait; use log::{error, info}; use regex::Regex; use tari_common::configuration::Network; -use tauri::api::path::cache_dir; use crate::{ download_utils::download_file_with_retries, github, progress_tracker::ProgressTracker, @@ -52,7 +51,7 @@ impl LatestVersionApiAdapter for GithubReleasesAdapter { fn get_binary_folder(&self) -> Result { let cache_path = - cache_dir().ok_or_else(|| anyhow::anyhow!("Failed to get cache directory"))?; + dirs::cache_dir().ok_or_else(|| anyhow::anyhow!("Failed to get cache directory"))?; let binary_folder_path = cache_path .join(APPLICATION_FOLDER_ID) diff --git a/src-tauri/src/binaries/adapter_tor.rs b/src-tauri/src/binaries/adapter_tor.rs index 0cb8ae751..542198dc0 100644 --- a/src-tauri/src/binaries/adapter_tor.rs +++ b/src-tauri/src/binaries/adapter_tor.rs @@ -10,7 +10,7 @@ use log::{error, info}; use regex::Regex; use std::path::PathBuf; use tari_common::configuration::Network; -use tauri::api::path::cache_dir; + pub const LOG_TARGET: &str = "tari::universe::adapter_tor"; pub(crate) struct TorReleaseAdapter {} @@ -82,7 +82,7 @@ impl LatestVersionApiAdapter for TorReleaseAdapter { fn get_binary_folder(&self) -> Result { let cache_path = - cache_dir().ok_or_else(|| anyhow::anyhow!("Failed to get cache directory"))?; + dirs::cache_dir().ok_or_else(|| anyhow::anyhow!("Failed to get cache directory"))?; let binary_folder_path = cache_path .join(APPLICATION_FOLDER_ID) diff --git a/src-tauri/src/binaries/adapter_xmrig.rs b/src-tauri/src/binaries/adapter_xmrig.rs index feaab5f68..c9bd92901 100644 --- a/src-tauri/src/binaries/adapter_xmrig.rs +++ b/src-tauri/src/binaries/adapter_xmrig.rs @@ -5,7 +5,6 @@ use async_trait::async_trait; use log::error; use regex::Regex; use tari_common::configuration::Network; -use tauri::api::path::cache_dir; use crate::{github, progress_tracker::ProgressTracker, APPLICATION_FOLDER_ID}; @@ -42,7 +41,7 @@ impl LatestVersionApiAdapter for XmrigVersionApiAdapter { fn get_binary_folder(&self) -> Result { let cache_path = - cache_dir().ok_or_else(|| anyhow::anyhow!("Failed to get cache directory"))?; + dirs::cache_dir().ok_or_else(|| anyhow::anyhow!("Failed to get cache directory"))?; let binary_folder_path = cache_path .join(APPLICATION_FOLDER_ID) diff --git a/src-tauri/src/binaries/binaries_resolver.rs b/src-tauri/src/binaries/binaries_resolver.rs index 48caee158..e9d476e49 100644 --- a/src-tauri/src/binaries/binaries_resolver.rs +++ b/src-tauri/src/binaries/binaries_resolver.rs @@ -9,6 +9,7 @@ use std::path::PathBuf; use std::sync::LazyLock; use std::time::Duration; use tari_common::configuration::Network; +use tauri_plugin_sentry::sentry; use tokio::sync::watch::Receiver; use tokio::sync::RwLock; use tokio::time::timeout; diff --git a/src-tauri/src/commands.rs b/src-tauri/src/commands.rs index 1f8863180..1b9dfd7e2 100644 --- a/src-tauri/src/commands.rs +++ b/src-tauri/src/commands.rs @@ -12,7 +12,6 @@ use crate::internal_wallet::{InternalWallet, PaperWalletConfig}; use crate::node_manager::NodeManagerError; use crate::p2pool::models::{Connections, Stats}; use crate::progress_tracker::ProgressTracker; -use crate::systemtray_manager::{SystemtrayManager, SystrayData}; use crate::tor_adapter::TorConfig; use crate::utils::shutdown_utils::stop_all_processes; use crate::wallet_adapter::{TransactionInfo, WalletBalance}; @@ -22,7 +21,6 @@ use keyring::Entry; use log::{debug, error, info, warn}; use monero_address_creator::Seed as MoneroSeed; use regex::Regex; -use sentry::integrations::anyhow::capture_anyhow; use serde::Serialize; use std::fs::{read_dir, remove_dir_all, remove_file, File}; use std::sync::atomic::Ordering; @@ -31,6 +29,8 @@ use std::time::{Duration, Instant, SystemTime}; use tari_common::configuration::Network; use tari_core::transactions::tari_amount::MicroMinotari; use tauri::{Manager, PhysicalPosition, PhysicalSize}; +use tauri_plugin_sentry::sentry; +use tauri_plugin_sentry::sentry::protocol::Event; const MAX_ACCEPTABLE_COMMAND_TIME: Duration = Duration::from_secs(1); const LOG_TARGET: &str = "tari::universe::commands"; @@ -108,12 +108,12 @@ pub struct CpuMinerConnectionStatus { } #[tauri::command] -pub async fn close_splashscreen(window: tauri::Window) { - let splashscreen_window = window - .get_window("splashscreen") +pub async fn close_splashscreen(app: tauri::AppHandle) { + let splashscreen_window = app + .get_webview_window("splashscreen") .expect("no window labeled 'splashscreen' found"); - let main_window = window - .get_window("main") + let main_window = app + .get_webview_window("main") .expect("no window labeled 'main' found"); if let (Ok(window_position), Ok(window_size)) = ( @@ -163,12 +163,8 @@ pub async fn download_and_start_installer( } #[tauri::command] -pub async fn exit_application( - _window: tauri::Window, - state: tauri::State<'_, UniverseAppState>, - app: tauri::AppHandle, -) -> Result<(), String> { - stop_all_processes(state.inner().clone(), true).await?; +pub async fn exit_application(_window: tauri::Window, app: tauri::AppHandle) -> Result<(), String> { + stop_all_processes(app.clone(), true).await?; app.exit(0); Ok(()) @@ -338,13 +334,12 @@ pub async fn get_network( #[tauri::command] pub async fn get_miner_metrics( state: tauri::State<'_, UniverseAppState>, - app: tauri::AppHandle, ) -> Result { let timer = Instant::now(); if state.is_getting_miner_metrics.load(Ordering::SeqCst) { let read = state.cached_miner_metrics.read().await; if let Some(metrics) = &*read { - warn!(target: LOG_TARGET, "Already getting miner metrics, returning cached value"); + debug!(target: LOG_TARGET, "Already getting miner metrics, returning cached value"); return Ok(metrics.clone()); } warn!(target: LOG_TARGET, "Already getting miner metrics"); @@ -352,7 +347,6 @@ pub async fn get_miner_metrics( } state.is_getting_miner_metrics.store(true, Ordering::SeqCst); - // info!(target: LOG_TARGET, "1 elapsed {:?}", timer.elapsed()); let (sha_hash_rate, randomx_hash_rate, block_reward, block_height, block_time, is_synced) = state .node_manager @@ -364,7 +358,6 @@ pub async fn get_miner_metrics( } (0, 0, MicroMinotari(0), 0, 0, false) }); - // info!(target: LOG_TARGET, "2 elapsed {:?}", timer.elapsed()); let cpu_miner = state.cpu_miner.read().await; let cpu_mining_status = match cpu_miner @@ -383,8 +376,6 @@ pub async fn get_miner_metrics( }; drop(cpu_miner); - // info!(target: LOG_TARGET, "3 elapsed {:?}", timer.elapsed()); - let gpu_miner = state.gpu_miner.read().await; let gpu_mining_status = match gpu_miner.status(sha_hash_rate, block_reward).await { Ok(gpu) => gpu, @@ -398,45 +389,11 @@ pub async fn get_miner_metrics( }; drop(gpu_miner); - // let config_path = app - // .path_resolver() - // .app_config_dir() - // .expect("Could not get config dir"); - // let _unused = HardwareMonitor::current() - // .write() - // .await - // .load_status_file(config_path); - // let hardware_status = HardwareMonitor::current() - // .write() - // .await - // .read_hardware_parameters(); - - // info!(target: LOG_TARGET, "4 elapsed {:?}", timer.elapsed()); let gpu_public_parameters = HardwareStatusMonitor::current() .get_gpu_devices_public_properties() .await .map_err(|e| e.to_string())?; - // .map_err(|e| e.to_string())?; - // info!(target: LOG_TARGET, "5 elapsed {:?}", timer.elapsed()); - // let cpu_public_parameters = HardwareStatusMonitor::current() - // .get_cpu_public_properties() - // .await - // .map_err(|e| e.to_string())?; - - // info!(target: LOG_TARGET, "6 elapsed {:?}", timer.elapsed()); - - let new_systemtray_data: SystrayData = SystemtrayManager::current().create_systemtray_data( - cpu_mining_status.hash_rate, - gpu_mining_status.hash_rate as f64, - // gpu_public_parameters.clone(), - // cpu_public_parameters.clone(), - (cpu_mining_status.estimated_earnings + gpu_mining_status.estimated_earnings) as f64, - ); - - // info!(target: LOG_TARGET, "7 elapsed {:?}", timer.elapsed()); - SystemtrayManager::current().update_systray(app, new_systemtray_data); - - // info!(target: LOG_TARGET, "8 elapsed {:?}", timer.elapsed()); + let connected_peers = state .node_manager .list_connected_peers() @@ -447,7 +404,7 @@ pub async fn get_miner_metrics( warn!(target: LOG_TARGET, "get_miner_metrics took too long: {:?}", timer.elapsed()); } - let ret = MinerMetrics { + let metrics_ret = MinerMetrics { sha_network_hash_rate: sha_hash_rate, randomx_network_hash_rate: randomx_hash_rate, cpu: CpuMinerMetrics { @@ -466,13 +423,14 @@ pub async fn get_miner_metrics( connected_peers, }, }; + let mut lock = state.cached_miner_metrics.write().await; - *lock = Some(ret.clone()); + *lock = Some(metrics_ret.clone()); state .is_getting_miner_metrics .store(false, Ordering::SeqCst); - Ok(ret) + Ok(metrics_ret) } #[tauri::command] @@ -489,7 +447,7 @@ pub async fn get_monero_seed_words( } let config_path = app - .path_resolver() + .path() .app_config_dir() .expect("Could not get config dir"); @@ -610,7 +568,7 @@ pub async fn get_used_p2pool_stats_server_port( pub async fn get_paper_wallet_details(app: tauri::AppHandle) -> Result { let timer = Instant::now(); let config_path = app - .path_resolver() + .path() .app_config_dir() .expect("Could not get config dir"); let internal_wallet = InternalWallet::load_or_create(config_path) @@ -635,7 +593,7 @@ pub async fn get_seed_words( ) -> Result, String> { let timer = Instant::now(); let config_path = app - .path_resolver() + .path() .app_config_dir() .expect("Could not get config dir"); let internal_wallet = InternalWallet::load_or_create(config_path) @@ -773,35 +731,33 @@ pub async fn get_transaction_history( pub async fn import_seed_words( seed_words: Vec, _window: tauri::Window, - state: tauri::State<'_, UniverseAppState>, app: tauri::AppHandle, ) -> Result<(), String> { let timer = Instant::now(); let config_path = app - .path_resolver() + .path() .app_config_dir() .expect("Could not get config dir"); let data_dir = app - .path_resolver() + .path() .app_local_data_dir() .expect("Could not get data dir"); - stop_all_processes(state.inner().clone(), false).await?; + stop_all_processes(app.clone(), false).await?; - tauri::async_runtime::spawn(async move { - match InternalWallet::create_from_seed(config_path, seed_words).await { - Ok(_wallet) => { - InternalWallet::clear_wallet_local_data(data_dir).await?; - info!(target: LOG_TARGET, "[import_seed_words] Restarting the app"); - app.restart(); - Ok(()) - } - Err(e) => { - error!(target: LOG_TARGET, "Error loading internal wallet: {:?}", e); - Err(e) - } + match InternalWallet::create_from_seed(config_path, seed_words).await { + Ok(_wallet) => { + InternalWallet::clear_wallet_local_data(data_dir) + .await + .map_err(|e| e.to_string())?; + info!(target: LOG_TARGET, "[import_seed_words] Restarting the app"); + app.restart(); } - }); + Err(e) => { + error!(target: LOG_TARGET, "Error loading internal wallet: {:?}", e); + e.to_string() + } + }; if timer.elapsed() > MAX_ACCEPTABLE_COMMAND_TIME { warn!(target: LOG_TARGET, "import_seed_words took too long: {:?}", timer.elapsed()); @@ -822,10 +778,7 @@ pub fn log_web_message(level: String, message: Vec) { #[tauri::command] pub fn open_log_dir(app: tauri::AppHandle) { - let log_dir = app - .path_resolver() - .app_log_dir() - .expect("Could not get log dir"); + let log_dir = app.path().app_log_dir().expect("Could not get log dir"); if let Err(e) = open::that(log_dir) { error!(target: LOG_TARGET, "Could not open log dir: {:?}", e); } @@ -835,16 +788,15 @@ pub fn open_log_dir(app: tauri::AppHandle) { pub async fn reset_settings<'r>( reset_wallet: bool, _window: tauri::Window, - state: tauri::State<'_, UniverseAppState>, app: tauri::AppHandle, ) -> Result<(), String> { - stop_all_processes(state.inner().clone(), true).await?; + stop_all_processes(app.clone(), true).await?; let network = Network::get_current_or_user_setting_or_default().as_key_str(); - let app_config_dir = app.path_resolver().app_config_dir(); - let app_cache_dir = app.path_resolver().app_cache_dir(); - let app_data_dir = app.path_resolver().app_data_dir(); - let app_local_data_dir = app.path_resolver().app_local_data_dir(); + let app_config_dir = app.path().app_config_dir(); + let app_cache_dir = app.path().app_cache_dir(); + let app_data_dir = app.path().app_data_dir(); + let app_local_data_dir = app.path().app_local_data_dir(); let dirs_to_remove = [ app_config_dir, @@ -855,7 +807,7 @@ pub async fn reset_settings<'r>( let valid_dir_paths: Vec = dirs_to_remove .iter() .filter_map(|dir| { - if let Some(path) = dir { + if let Ok(path) = dir { path.to_str().map(|s| s.to_string()) } else { None @@ -930,8 +882,6 @@ pub async fn reset_settings<'r>( info!(target: LOG_TARGET, "[reset_settings] Restarting the app"); app.restart(); - - Ok(()) } #[tauri::command] @@ -948,15 +898,13 @@ pub async fn resolve_application_language( pub async fn restart_application( should_stop_miners: bool, _window: tauri::Window, - state: tauri::State<'_, UniverseAppState>, app: tauri::AppHandle, ) -> Result<(), String> { if should_stop_miners { - stop_all_processes(state.inner().clone(), true).await?; + stop_all_processes(app.clone(), true).await?; } app.restart(); - Ok(()) } #[tauri::command] @@ -968,15 +916,13 @@ pub async fn send_feedback( app: tauri::AppHandle, ) -> Result { let timer = Instant::now(); + let app_log_dir = Some(app.path().app_log_dir().expect("Could not get log dir.")); + let reference = state .feedback .read() .await - .send_feedback( - feedback, - include_logs, - app.path_resolver().app_log_dir().clone(), - ) + .send_feedback(feedback, include_logs, app_log_dir.clone()) .await .inspect_err(|e| error!("error at send_feedback {:?}", e)) .map_err(|e| e.to_string())?; @@ -1374,7 +1320,7 @@ pub async fn set_use_tor( .map_err(|e| e.to_string())?; let config_dir = app - .path_resolver() + .path() .app_config_dir() .expect("Could not get config dir"); @@ -1427,7 +1373,12 @@ pub async fn setup_application( rollback.set_value(true, Duration::from_millis(1000)).await; setup_inner(window, state.clone(), app).await.map_err(|e| { warn!(target: LOG_TARGET, "Error setting up application: {:?}", e); - capture_anyhow(&e); + sentry::capture_event(Event { + level: sentry::Level::Error, + message: Some(e.to_string()), + culprit: Some("setup-inner".to_string()), + ..Default::default() + }); e.to_string() })?; @@ -1479,15 +1430,13 @@ pub async fn start_mining<'r>( &cpu_miner_config, monero_address.to_string(), mm_proxy_port, - app.path_resolver() + app.path() .app_local_data_dir() .expect("Could not get data dir"), - app.path_resolver() + app.path() .app_config_dir() .expect("Could not get config dir"), - app.path_resolver() - .app_log_dir() - .expect("Could not get log dir"), + app.path().app_log_dir().expect("Could not get log dir"), mode, custom_cpu_usage, ) @@ -1542,15 +1491,13 @@ pub async fn start_mining<'r>( state.shutdown.to_signal(), tari_address, source, - app.path_resolver() + app.path() .app_local_data_dir() .expect("Could not get data dir"), - app.path_resolver() + app.path() .app_config_dir() .expect("Could not get config dir"), - app.path_resolver() - .app_log_dir() - .expect("Could not get log dir"), + app.path().app_log_dir().expect("Could not get log dir"), mode, telemetry_id, custom_gpu_usage, @@ -1618,12 +1565,7 @@ pub async fn update_applications( ) .map_err(|e| e.to_string())?; - let progress_tracker = ProgressTracker::new( - app.get_window("main") - .expect("Could not get main window") - .clone(), - None, - ); + let progress_tracker = ProgressTracker::new(app.clone(), None); binary_resolver .update_binary(Binaries::Xmrig, progress_tracker.clone()) .await diff --git a/src-tauri/src/gpu_miner.rs b/src-tauri/src/gpu_miner.rs index 4098c8896..29ce41f57 100644 --- a/src-tauri/src/gpu_miner.rs +++ b/src-tauri/src/gpu_miner.rs @@ -163,16 +163,24 @@ impl GpuMiner { pub async fn detect(&mut self, config_dir: PathBuf) -> Result<(), anyhow::Error> { info!(target: LOG_TARGET, "Verify if gpu miner can work on the system"); - let output_file = config_dir + let config_file = config_dir + .join("gpuminer") + .join("config.json") + .to_string_lossy() + .to_string(); + let gpu_status_file = config_dir .join("gpuminer") .join("gpu_status.json") .to_string_lossy() .to_string(); + let args: Vec = vec![ "--detect".to_string(), "true".to_string(), + "--config".to_string(), + config_file.clone(), "--gpu-status-file".to_string(), - output_file.clone(), + gpu_status_file.clone(), ]; let gpuminer_bin = BinaryResolver::current() .read() @@ -184,7 +192,7 @@ impl GpuMiner { let child = process_utils::launch_child_process(&gpuminer_bin, &config_dir, None, &args)?; let output = child.wait_with_output().await?; info!(target: LOG_TARGET, "Gpu detect exit code: {:?}", output.status.code().unwrap_or_default()); - let gpu_settings = std::fs::read_to_string(output_file)?; + let gpu_settings = std::fs::read_to_string(gpu_status_file)?; let gpu_settings: GpuStatusJson = serde_json::from_str(&gpu_settings)?; self.gpu_devices = gpu_settings.gpu_devices; match output.status.code() { diff --git a/src-tauri/src/hardware/hardware_status_monitor.rs b/src-tauri/src/hardware/hardware_status_monitor.rs index 0f73fa487..124689e15 100644 --- a/src-tauri/src/hardware/hardware_status_monitor.rs +++ b/src-tauri/src/hardware/hardware_status_monitor.rs @@ -15,11 +15,10 @@ use super::{ intel_gpu_reader::IntelGpuReader, nvidia_gpu_reader::NvidiaGpuReader, GpuParametersReader, }, }; -use anyhow::{Context, Error}; +use anyhow::Error; use log::{error, info, warn}; use serde::{Deserialize, Serialize}; use sysinfo::{CpuRefreshKind, RefreshKind, System}; -use tauri::api::path::config_dir; use tokio::sync::RwLock; const LOG_TARGET: &str = "tari::universe::auto_launcher"; @@ -144,12 +143,11 @@ impl HardwareStatusMonitor { } } - async fn load_gpu_devices_from_status_file(&self) -> Result { - let config_dir = config_dir().context("Failed to get config directory")?; - let file: PathBuf = config_dir - .join(APPLICATION_FOLDER_ID) - .join("gpuminer") - .join("gpu_status.json"); + async fn load_gpu_devices_from_status_file( + &self, + config_dir: PathBuf, + ) -> Result { + let file: PathBuf = config_dir.join("gpuminer").join("gpu_status.json"); if file.exists() { info!(target: LOG_TARGET, "Loading gpu status from file: {:?}", file); let content = tokio::fs::read_to_string(file).await?; @@ -178,7 +176,10 @@ impl HardwareStatusMonitor { } async fn initialize_gpu_devices(&self) -> Result, Error> { - let gpu_status_file_content = self.load_gpu_devices_from_status_file().await?; + let config_dir = dirs::config_dir() + .expect("Could not get config dir") + .join(APPLICATION_FOLDER_ID); + let gpu_status_file_content = self.load_gpu_devices_from_status_file(config_dir).await?; let mut platform_devices = Vec::new(); for gpu_device in &gpu_status_file_content.gpu_devices { diff --git a/src-tauri/src/internal_wallet.rs b/src-tauri/src/internal_wallet.rs index 3b8d63e63..14de53cde 100644 --- a/src-tauri/src/internal_wallet.rs +++ b/src-tauri/src/internal_wallet.rs @@ -25,7 +25,7 @@ use tari_key_manager::mnemonic_wordlists::MNEMONIC_ENGLISH_WORDS; use tari_key_manager::SeedWords; use tari_utilities::hex::Hex; -use crate::credential_manager::CredentialManager; +use crate::credential_manager::{Credential, CredentialError, CredentialManager}; const KEY_MANAGER_COMMS_SECRET_KEY_BRANCH_KEY: &str = "comms"; const LOG_TARGET: &str = "tari::universe::internal_wallet"; @@ -163,6 +163,14 @@ impl InternalWallet { creds.tari_seed_passphrase } }, + Err(CredentialError::NoEntry(_)) => { + let credentials = Credential { + tari_seed_passphrase: Some(SafePassword::from(generate_password(32))), + monero_seed: None, + }; + cm.set_credentials(&credentials)?; + credentials.tari_seed_passphrase + } Err(_) => { return Err(anyhow!( "Credentials didn't exist, and this shouldn't happen" diff --git a/src-tauri/src/main.rs b/src-tauri/src/main.rs index accd03f11..f0253feeb 100644 --- a/src-tauri/src/main.rs +++ b/src-tauri/src/main.rs @@ -19,7 +19,8 @@ use tari_common::configuration::Network; use tari_common_types::tari_address::TariAddress; use tari_shutdown::Shutdown; use tauri::async_runtime::{block_on, JoinHandle}; -use tauri::{Manager, PhysicalPosition, PhysicalSize, RunEvent, UpdaterEvent, WindowEvent}; +use tauri::{Emitter, Manager, PhysicalPosition, PhysicalSize, RunEvent, WindowEvent}; +use tauri_plugin_sentry::{minidump, sentry}; use tokio::sync::{Mutex, RwLock}; use tokio::time; use utils::logging_utils::setup_logging; @@ -31,7 +32,6 @@ use binaries::{binaries_list::Binaries, binaries_resolver::BinaryResolver}; use node_manager::NodeManagerError; use progress_tracker::ProgressTracker; use setup_status_event::SetupStatusEvent; -use systemtray_manager::SystemtrayManager; use telemetry_manager::TelemetryManager; use crate::cpu_miner::CpuMiner; @@ -86,7 +86,6 @@ mod process_utils; mod process_watcher; mod progress_tracker; mod setup_status_event; -mod systemtray_manager; mod telemetry_manager; mod tests; mod tor_adapter; @@ -108,7 +107,7 @@ const APPLICATION_FOLDER_ID: &str = "com.tari.universe"; #[cfg(all(feature = "release-ci-beta", not(feature = "release-ci")))] const APPLICATION_FOLDER_ID: &str = "com.tari.universe.beta"; -pub struct CpuMinerConfig { +struct CpuMinerConfig { node_connection: CpuMinerConnection, tari_address: TariAddress, eco_mode_xmrig_options: Vec, @@ -118,13 +117,6 @@ pub struct CpuMinerConfig { ludicrous_mode_cpu_percentage: Option, } -#[derive(Debug, Serialize, Clone)] -#[serde(rename_all = "camelCase")] -struct UpdateProgressRustEvent { - chunk_length: usize, - content_length: u64, - downloaded: u64, -} #[derive(Debug, Serialize, Clone)] #[allow(dead_code)] struct CriticalProblemEvent { @@ -138,46 +130,41 @@ async fn setup_inner( state: tauri::State<'_, UniverseAppState>, app: tauri::AppHandle, ) -> Result<(), anyhow::Error> { - window - .emit( - "message", - SetupStatusEvent { - event_type: "setup_status".to_string(), - title: "starting-up".to_string(), - title_params: None, - progress: 0.0, - }, - ) - .inspect_err(|e| error!(target: LOG_TARGET, "Could not emit event 'message': {:?}", e))?; + app.emit( + "message", + SetupStatusEvent { + event_type: "setup_status".to_string(), + title: "starting-up".to_string(), + title_params: None, + progress: 0.0, + }, + ) + .inspect_err(|e| error!(target: LOG_TARGET, "Could not emit event 'message': {:?}", e))?; #[cfg(target_os = "macos")] if !cfg!(dev) && !is_app_in_applications_folder() { - window - .emit( - "critical_problem", - CriticalProblemEvent { - title: None, - description: Some("not-installed-in-applications-directory".to_string()), - }, - ) - .inspect_err( - |e| error!(target: LOG_TARGET, "Could not emit event 'critical_problem': {:?}", e), - )?; + app.emit( + "critical_problem", + CriticalProblemEvent { + title: None, + description: Some("not-installed-in-applications-directory".to_string()), + }, + ) + .inspect_err( + |e| error!(target: LOG_TARGET, "Could not emit event 'critical_problem': {:?}", e), + )?; return Ok(()); } let data_dir = app - .path_resolver() + .path() .app_local_data_dir() .expect("Could not get data dir"); let config_dir = app - .path_resolver() + .path() .app_config_dir() .expect("Could not get config dir"); - let log_dir = app - .path_resolver() - .app_log_dir() - .expect("Could not get log dir"); + let log_dir = app.path().app_log_dir().expect("Could not get log dir"); #[cfg(target_os = "windows")] if cfg!(target_os = "windows") && !cfg!(dev) { @@ -192,8 +179,7 @@ async fn setup_inner( .await; if is_missing { - window - .emit( + app.emit( "missing-applications", external_dependencies ).inspect_err(|e| error!(target: LOG_TARGET, "Could not emit event 'missing-applications': {:?}", e))?; @@ -213,7 +199,7 @@ async fn setup_inner( .await?; let (tx, rx) = watch::channel("".to_string()); - let progress = ProgressTracker::new(window.clone(), Some(tx)); + let progress = ProgressTracker::new(app.clone(), Some(tx)); let last_binaries_update_timestamp = state.config.read().await.last_binaries_update_timestamp(); let now = SystemTime::now(); @@ -478,7 +464,7 @@ async fn setup_inner( mm_proxy_manager.wait_ready().await?; *state.is_setup_finished.write().await = true; drop( - window + app.clone() .emit( "message", SetupStatusEvent { @@ -491,15 +477,35 @@ async fn setup_inner( .inspect_err(|e| error!(target: LOG_TARGET, "Could not emit event 'message': {:?}", e)), ); + let move_handle = app.clone(); + tauri::async_runtime::spawn(async move { + let mut interval: time::Interval = time::interval(Duration::from_secs(1)); + loop { + let app_state = move_handle.state::().clone(); + + if app_state.shutdown.is_triggered() { + break; + } + + interval.tick().await; + if let Ok(metrics_ret) = commands::get_miner_metrics(app_state).await { + drop(move_handle.clone().emit("miner_metrics", metrics_ret)); + } + } + }); + let app_handle_clone: tauri::AppHandle = app.clone(); tauri::async_runtime::spawn(async move { let mut interval: time::Interval = time::interval(Duration::from_secs(30)); let mut has_send_error = false; loop { - interval.tick().await; - let state = app_handle_clone.state::().inner(); + if state.shutdown.is_triggered() { + break; + } + + interval.tick().await; let check_if_orphan = state .node_manager .check_if_is_orphan_chain(!has_send_error) @@ -512,7 +518,7 @@ async fn setup_inner( if is_stuck && !has_send_error { has_send_error = true; } - drop(app_handle_clone.emit_all("is_stuck", is_stuck)); + drop(app_handle_clone.emit("is_stuck", is_stuck)); } Err(ref e) => { error!(target: LOG_TARGET, "{}", e); @@ -523,6 +529,7 @@ async fn setup_inner( Ok(()) } + #[derive(Clone)] struct UniverseAppState { stop_start_mutex: Arc>, @@ -565,16 +572,18 @@ fn main() { let _unused = fix_path_env::fix(); // TODO: Integrate sentry into logs. Because we are using Tari's logging infrastructure, log4rs // sets the logger and does not expose a way to add sentry into it. - let client = sentry_tauri::sentry::init(( + + let client = sentry::init(( "https://edd6b9c1494eb7fda6ee45590b80bcee@o4504839079002112.ingest.us.sentry.io/4507979991285760", - sentry_tauri::sentry::ClientOptions { - release: sentry_tauri::sentry::release_name!(), + sentry::ClientOptions { + release: sentry::release_name!(), + attach_stacktrace: true, ..Default::default() }, )); - let _guard = sentry_tauri::minidump::init(&client); + let _guard = minidump::init(&client); - let mut shutdown = Shutdown::new(); + let shutdown = Shutdown::new(); // NOTE: Nothing is started at this point, so ports are not known. You can only start settings ports // and addresses once the different services have been started. @@ -614,17 +623,7 @@ fn main() { ); let feedback = Feedback::new(app_in_memory_config.clone(), app_config.clone()); - /////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - // let mm_proxy_config = if app_config_raw.p2pool_enabled { - // MergeMiningProxyConfig::new_with_p2pool(mm_proxy_port, p2pool_config.grpc_port, None) - // } else { - // MergeMiningProxyConfig::new( - // mm_proxy_port, - // p2pool_config.grpc_port, - // base_node_grpc_port, - // None, - // ) - // }; + let mm_proxy_manager = MmProxyManager::new(); let app_state = UniverseAppState { stop_start_mutex: Arc::new(Mutex::new(())), @@ -656,34 +655,31 @@ fn main() { setup_counter: Arc::new(RwLock::new(AutoRollback::new(false))), }; - let systray = SystemtrayManager::current().get_systray().clone(); - let app = tauri::Builder::default() - .system_tray(systray) - .on_system_tray_event(|app, event| { - SystemtrayManager::current().handle_system_tray_event(app.clone(), event) - }) + .plugin(tauri_plugin_process::init()) + .plugin(tauri_plugin_sentry::init_with_no_injection(&client)) + .plugin(tauri_plugin_os::init()) + .plugin(tauri_plugin_shell::init()) .plugin(tauri_plugin_single_instance::init(|app, argv, cwd| { println!("{}, {argv:?}, {cwd}", app.package_info().name); - app.emit_all("single-instance", Payload { args: argv, cwd }) + app.emit("single-instance", Payload { args: argv, cwd }) .unwrap_or_else( |e| error!(target: LOG_TARGET, "Could not emit single-instance event: {:?}", e), ); })) + .plugin(tauri_plugin_updater::Builder::new().build()) .manage(app_state.clone()) .setup(|app| { let contents = setup_logging( - &app.path_resolver() + &app.path() .app_config_dir() .expect("Could not get config dir") .join("logs") .join("universe") .join("configs") .join("log4rs_config_universe.yml"), - &app.path_resolver() - .app_log_dir() - .expect("Could not get log dir"), + &app.path().app_log_dir().expect("Could not get log dir"), include_str!("../log4rs/universe_sample.yml"), ) .expect("Could not set up logging"); @@ -692,10 +688,11 @@ fn main() { log4rs::init_raw_config(config).expect("Could not initialize logging"); let splash_window = app - .get_window("splashscreen") + .get_webview_window("splashscreen") .expect("Main window not found"); + let config_path = app - .path_resolver() + .path() .app_config_dir() .expect("Could not get config dir"); @@ -759,7 +756,7 @@ fn main() { }; let config_path = app - .path_resolver() + .path() .app_config_dir() .expect("Could not get config dir"); let address = app.state::().tari_address.clone(); @@ -812,6 +809,7 @@ fn main() { commands::get_max_consumption_levels, commands::get_miner_metrics, commands::get_monero_seed_words, + commands::get_network, commands::get_p2pool_stats, commands::get_paper_wallet_details, commands::get_seed_words, @@ -865,42 +863,16 @@ fn main() { "Starting Tari Universe version: {}", app.package_info().version ); - let mut downloaded: u64 = 0; - app.run(move |app_handle, event| match event { - tauri::RunEvent::Updater(updater_event) => match updater_event { - UpdaterEvent::Error(e) => { - error!(target: LOG_TARGET, "Updater error: {:?}", e); - } - UpdaterEvent::DownloadProgress { chunk_length, content_length } => { - downloaded += chunk_length as u64; - let content_length = content_length.unwrap_or_else(|| { - warn!(target: LOG_TARGET, "Unable to determine content length"); - downloaded - }); - - info!(target: LOG_TARGET, "Chunk Length: {} | Download progress: {} / {}", chunk_length, downloaded, content_length); - if let Some(window) = app_handle.get_window("main") { - drop(window.emit("update-progress", UpdateProgressRustEvent { chunk_length, content_length, downloaded: downloaded.min(content_length) }).inspect_err(|e| error!(target: LOG_TARGET, "Could not emit event 'update-progress': {:?}", e)) - ); - } - } - UpdaterEvent::Downloaded => { - shutdown.trigger(); - } - _ => { - info!(target: LOG_TARGET, "Updater event: {:?}", updater_event); - } - }, + app.run(move |app_handle, event| match event { tauri::RunEvent::ExitRequested { api: _, .. } => { - // api.prevent_exit(); - info!(target: LOG_TARGET, "App shutdown caught"); - let _unused = block_on(stop_all_processes(app_state.clone(), true)); + info!(target: LOG_TARGET, "App shutdown request caught"); + let _unused = block_on(stop_all_processes(app_handle.clone(), true)); info!(target: LOG_TARGET, "App shutdown complete"); } tauri::RunEvent::Exit => { info!(target: LOG_TARGET, "App shutdown caught"); - let _unused = block_on(stop_all_processes(app_state.clone(), true)); + let _unused = block_on(stop_all_processes(app_handle.clone(), true)); info!(target: LOG_TARGET, "Tari Universe v{} shut down successfully", app_handle.package_info().version); } RunEvent::MainEventsCleared => { @@ -909,7 +881,7 @@ fn main() { RunEvent::WindowEvent { label, event, .. } => { trace!(target: LOG_TARGET, "Window event: {:?} {:?}", label, event); if let WindowEvent::CloseRequested { .. } = event { - if let Some(window) = app_handle.get_window(&label) { + if let Some(window) = app_handle.get_webview_window(&label) { if let (Ok(window_position), Ok(window_size)) = (window.outer_position(), window.outer_size()) { let window_settings = WindowSettings { x: window_position.x, diff --git a/src-tauri/src/node_manager.rs b/src-tauri/src/node_manager.rs index 0cc4d312b..6aab07be2 100644 --- a/src-tauri/src/node_manager.rs +++ b/src-tauri/src/node_manager.rs @@ -5,12 +5,13 @@ use std::time::SystemTime; use chrono::{NaiveDateTime, TimeZone, Utc}; use log::{error, info}; use minotari_node_grpc_client::grpc::Peer; -use sentry::protocol::Event; use tari_common::configuration::Network; use tari_core::transactions::tari_amount::MicroMinotari; use tari_crypto::ristretto::RistrettoPublicKey; use tari_shutdown::ShutdownSignal; use tari_utilities::hex::Hex; +use tauri_plugin_sentry::sentry; +use tauri_plugin_sentry::sentry::protocol::Event; use tokio::fs; use tokio::sync::RwLock; diff --git a/src-tauri/src/process_adapter.rs b/src-tauri/src/process_adapter.rs index 32c645037..4dc1883a6 100644 --- a/src-tauri/src/process_adapter.rs +++ b/src-tauri/src/process_adapter.rs @@ -3,11 +3,11 @@ use async_trait::async_trait; use futures_util::future::FusedFuture; use log::{error, info, warn}; use sentry::protocol::Event; -use sentry_tauri::sentry; use std::collections::HashMap; use std::fs; use std::path::PathBuf; use tari_shutdown::Shutdown; +use tauri_plugin_sentry::sentry; use tokio::runtime::Handle; use tokio::select; use tokio::task::JoinHandle; diff --git a/src-tauri/src/progress_tracker.rs b/src-tauri/src/progress_tracker.rs index 57d7b775c..739cbbec0 100644 --- a/src-tauri/src/progress_tracker.rs +++ b/src-tauri/src/progress_tracker.rs @@ -1,6 +1,7 @@ use std::{collections::HashMap, sync::Arc}; use log::error; +use tauri::{AppHandle, Emitter}; use tokio::sync::{watch::Sender, RwLock}; use crate::setup_status_event::SetupStatusEvent; @@ -20,9 +21,9 @@ impl Clone for ProgressTracker { } impl ProgressTracker { - pub fn new(window: tauri::Window, channel: Option>) -> Self { + pub fn new(app_handle: AppHandle, channel: Option>) -> Self { Self { - inner: Arc::new(RwLock::new(ProgressTrackerInner::new(window, channel))), + inner: Arc::new(RwLock::new(ProgressTrackerInner::new(app_handle, channel))), } } @@ -48,16 +49,16 @@ impl ProgressTracker { } pub struct ProgressTrackerInner { - window: tauri::Window, + app_handle: AppHandle, min: u64, next_max: u64, last_action_channel: Option>, } impl ProgressTrackerInner { - pub fn new(window: tauri::Window, channel: Option>) -> Self { + pub fn new(app_handle: AppHandle, channel: Option>) -> Self { Self { - window, + app_handle: app_handle.clone(), min: 0, next_max: 0, last_action_channel: channel, @@ -98,7 +99,7 @@ impl ProgressTrackerInner { .inspect_err(|e| error!(target: LOG_TARGET, "Could not send last action: {:?}", e)) .ok(); } - self.window + self.app_handle .emit( "message", SetupStatusEvent { diff --git a/src-tauri/src/systemtray_manager.rs b/src-tauri/src/systemtray_manager.rs deleted file mode 100644 index 05a0d48c4..000000000 --- a/src-tauri/src/systemtray_manager.rs +++ /dev/null @@ -1,389 +0,0 @@ -use human_format::Formatter; -use log::{error, info}; - -#[allow(unused_imports)] -use std::{ops::Div, sync::LazyLock}; -use tauri::{ - AppHandle, CustomMenuItem, Manager, SystemTray, SystemTrayEvent, SystemTrayMenu, - SystemTrayMenuItem, -}; - -#[allow(unused_imports)] -use crate::hardware::hardware_status_monitor::PublicDeviceProperties; - -const LOG_TARGET: &str = "tari::universe::systemtray_manager"; -static INSTANCE: LazyLock = LazyLock::new(SystemtrayManager::new); - -pub enum SystrayItemId { - CpuHashrate, - GpuHashrate, - #[allow(dead_code)] - CpuUsage, - #[allow(dead_code)] - GpuUsage, - EstimatedEarning, - UnMinimize, -} - -impl SystrayItemId { - pub fn to_str(&self) -> &str { - match self { - SystrayItemId::CpuHashrate => "cpu_hashrate", - SystrayItemId::GpuHashrate => "gpu_hashrate", - SystrayItemId::CpuUsage => "cpu_usage", - SystrayItemId::GpuUsage => "gpu_usage", - SystrayItemId::EstimatedEarning => "estimated_earning", - SystrayItemId::UnMinimize => "unminimize", - } - } - - pub fn get_title(&self, value: f64) -> String { - match self { - SystrayItemId::CpuHashrate => format!( - "CPU Hashrate: {} H/s", - Formatter::new() - .with_decimals(2) - .with_separator("") - .format(value) - ), - SystrayItemId::GpuHashrate => format!( - "GPU Hashrate: {} H/s", - Formatter::new() - .with_decimals(2) - .with_separator("") - .format(value) - ), - SystrayItemId::CpuUsage => format!("CPU Usage: {:.2}%", value), - SystrayItemId::GpuUsage => format!("GPU Usage: {:.2}%", value), - SystrayItemId::EstimatedEarning => { - format!( - "Est earning: {} tXTM/day", - Formatter::new() - .with_decimals(2) - .with_separator("") - .format(value / 1_000_000.0) - ) - } - SystrayItemId::UnMinimize => "Unminimize".to_string(), - } - } -} - -pub enum CurrentOperatingSystem { - Windows, - Linux, - MacOS, -} - -#[derive(Debug, Clone)] -pub struct SystrayData { - pub cpu_hashrate: f64, - pub gpu_hashrate: f64, - // pub cpu_usage: f64, - // pub gpu_usage: f64, - pub estimated_earning: f64, -} - -pub struct SystemtrayManager { - pub systray: SystemTray, -} - -impl SystemtrayManager { - pub fn new() -> Self { - let systray = SystemtrayManager::initialize_systray(); - - Self { systray } - } - fn initialize_menu() -> SystemTrayMenu { - info!(target: LOG_TARGET, "Initializing system tray menu"); - let cpu_hashrate = CustomMenuItem::new( - SystrayItemId::CpuHashrate.to_str(), - SystrayItemId::CpuHashrate.get_title(0.0), - ) - .disabled(); - let gpu_hashrate = CustomMenuItem::new( - SystrayItemId::GpuHashrate.to_str(), - SystrayItemId::GpuHashrate.get_title(0.0), - ) - .disabled(); - // let cpu_usage = CustomMenuItem::new( - // SystrayItemId::CpuUsage.to_str(), - // SystrayItemId::CpuUsage.get_title(0.0), - // ) - // .disabled(); - // let gpu_usage = CustomMenuItem::new( - // SystrayItemId::GpuUsage.to_str(), - // SystrayItemId::GpuUsage.get_title(0.0), - // ) - // .disabled(); - let estimated_earning = CustomMenuItem::new( - SystrayItemId::EstimatedEarning.to_str(), - SystrayItemId::EstimatedEarning.get_title(0.0), - ) - .disabled(); - let unminimize = CustomMenuItem::new( - SystrayItemId::UnMinimize.to_str(), - SystrayItemId::UnMinimize.get_title(0.0), - ); - - SystemTrayMenu::new() - // .add_item(cpu_usage) - .add_item(cpu_hashrate) - .add_native_item(SystemTrayMenuItem::Separator) - // .add_item(gpu_usage) - .add_item(gpu_hashrate) - .add_native_item(SystemTrayMenuItem::Separator) - .add_item(estimated_earning) - .add_native_item(SystemTrayMenuItem::Separator) - .add_item(unminimize) - } - - fn initialize_systray() -> SystemTray { - info!(target: LOG_TARGET, "Initializing system tray"); - let current_os = SystemtrayManager::detect_current_os(); - let systray = SystemTray::new(); - - let empty_data = SystrayData { - cpu_hashrate: 0.0, - gpu_hashrate: 0.0, - // cpu_usage: 0.0, - // gpu_usage: 0.0, - estimated_earning: 0.0, - }; - let tray_menu = SystemtrayManager::initialize_menu(); - let tooltip = SystemtrayManager::internal_create_tooltip_from_data(empty_data.clone()); - - match current_os { - CurrentOperatingSystem::Windows => { - return systray.with_tooltip(tooltip.clone().as_str()); - } - CurrentOperatingSystem::Linux => systray.with_menu(tray_menu), - CurrentOperatingSystem::MacOS => { - return systray - .with_menu(tray_menu) - .with_tooltip(tooltip.clone().as_str()) - } - } - } - - fn internal_create_tooltip_from_data(data: SystrayData) -> String { - let current_os = SystemtrayManager::detect_current_os(); - - match current_os { - CurrentOperatingSystem::Windows => { - format!( - "Hashrate \nCPU: {} H/s\nGPU: {} H/s\nEst. earning: {} tXTM/day", - Formatter::new() - .with_decimals(2) - .with_separator("") - .format(data.cpu_hashrate), - // data.cpu_usage, - Formatter::new() - .with_decimals(2) - .with_separator("") - .format(data.gpu_hashrate), - // data.gpu_usage, - Formatter::new() - .with_decimals(2) - .with_separator("") - .format(data.estimated_earning / 1_000_000.0) - ) - } - CurrentOperatingSystem::Linux => "Not supported".to_string(), - CurrentOperatingSystem::MacOS => { - format!( - "CPU:\n Hashrate: {} H/s\nGPU:\n Hashrate: {} H/s\nEst. earning: {} tXTM/day", - Formatter::new() - .with_decimals(0) - .with_separator("") - .format(data.cpu_hashrate), - // data.cpu_usage, - Formatter::new() - .with_decimals(2) - .with_separator("") - .format(data.gpu_hashrate), - // data.gpu_usage, - Formatter::new() - .with_decimals(2) - .with_separator("") - .format(data.estimated_earning / 1_000_000.0) - ) - } - } - } - - fn update_menu_field(&self, app: AppHandle, item_id: SystrayItemId, value: f64) { - app.tray_handle() - .get_item(item_id.to_str()) - .set_title(item_id.get_title(value)) - .unwrap_or_else(|e| { - error!(target: LOG_TARGET, "Failed to update menu field: {}", e); - }); - } - - fn update_menu_with_data(&self, app: AppHandle, data: SystrayData) { - self.update_menu_field(app.clone(), SystrayItemId::CpuHashrate, data.cpu_hashrate); - self.update_menu_field(app.clone(), SystrayItemId::GpuHashrate, data.gpu_hashrate); - // self.update_menu_field(app.clone(), SystrayItemId::CpuUsage, data.cpu_usage); - // self.update_menu_field(app.clone(), SystrayItemId::GpuUsage, data.gpu_usage); - self.update_menu_field( - app.clone(), - SystrayItemId::EstimatedEarning, - data.estimated_earning, - ); - self.update_minimize(app.clone()); - } - - #[allow(dead_code)] - pub fn create_tooltip_from_data(&self, data: SystrayData) -> String { - SystemtrayManager::internal_create_tooltip_from_data(data) - } - - pub fn update_minimize(&self, app: AppHandle) { - let window = app.get_window("main").expect("Could not get window"); - let _unused = app - .tray_handle() - .get_item(SystrayItemId::UnMinimize.to_str()) - .set_enabled(window.is_minimized().expect("Could not get is_minimized")); - } - - fn detect_current_os() -> CurrentOperatingSystem { - if cfg!(target_os = "windows") { - CurrentOperatingSystem::Windows - } else if cfg!(target_os = "linux") { - CurrentOperatingSystem::Linux - } else if cfg!(target_os = "macos") { - CurrentOperatingSystem::MacOS - } else { - panic!("Unsupported OS"); - } - } - - pub fn update_systray(&self, app: AppHandle, data: SystrayData) { - let current_os = SystemtrayManager::detect_current_os(); - let tooltip = SystemtrayManager::internal_create_tooltip_from_data(data.clone()); - - match current_os { - CurrentOperatingSystem::Windows => { - app.tray_handle() - .set_tooltip(tooltip.as_str()) - .unwrap_or_else(|e| { - error!(target: LOG_TARGET, "Failed to update tooltip: {}", e); - }); - } - CurrentOperatingSystem::Linux => { - self.update_menu_with_data(app, data); - } - CurrentOperatingSystem::MacOS => { - self.update_menu_with_data(app.clone(), data); - app.clone() - .tray_handle() - .set_tooltip(tooltip.as_str()) - .unwrap_or_else(|e| { - error!(target: LOG_TARGET, "Failed to update tooltip: {}", e); - }); - } - } - } - - pub fn handle_system_tray_event(&self, app: AppHandle, event: SystemTrayEvent) { - let window = match app.get_window("main") { - Some(window) => window, - None => { - error!(target: LOG_TARGET, "Failed to get main window"); - return; - } - }; - match event { - SystemTrayEvent::DoubleClick { .. } => { - window.unminimize().unwrap_or_else(|error| { - error!(target: LOG_TARGET, "Failed to unminimize window: {}", error); - }); - window.set_focus().unwrap_or_else(|error| { - error!(target: LOG_TARGET, "Failed to set focus on window: {}", error); - }); - } - SystemTrayEvent::MenuItemClick { id, .. } => { - info!(target: LOG_TARGET, "System tray menu item click event: {}", id); - match id.as_str() { - "unminimize" => { - info!(target: LOG_TARGET, "Unminimizing window"); - match SystemtrayManager::detect_current_os() { - CurrentOperatingSystem::Linux => { - let is_minimized = window.is_minimized().unwrap_or(false); - let is_visible = window.is_visible().unwrap_or(false); - - if is_minimized | !is_visible { - // Ony soultion to unminimize and show the window on Linux - // At least one that I found - window.hide().unwrap_or_else(|error| { - error!(target: LOG_TARGET, "Failed hide window: {}", error); - }); - window.unminimize().unwrap_or_else(|error| { - error!(target: LOG_TARGET, "Failed to unminimize window: {}", error); - }); - window.show().unwrap_or_else(|error| { - error!(target: LOG_TARGET, "Failed to show window: {}", error); - }); - window.set_focus().unwrap_or_else(|error| { - error!(target: LOG_TARGET, "Failed to set focus on window: {}", error); - }); - } - } - CurrentOperatingSystem::MacOS => { - window.unminimize().unwrap_or_else(|error| { - error!(target: LOG_TARGET, "Failed to unminimize window: {}", error); - }); - window.set_focus().unwrap_or_else(|error| { - error!(target: LOG_TARGET, "Failed to set focus on window: {}", error); - }); - } - _ => {} - } - } - _ => { - info!(target: LOG_TARGET, "Unknown menu item click event: {}", id); - } - } - } - _ => { - info!(target: LOG_TARGET, "System tray event"); - } - } - } - - pub fn create_systemtray_data( - &self, - cpu_hashrate: f64, - gpu_hashrate: f64, - // gpu_parameters: Vec, - // cpu_parameters: Vec, - estimated_earning: f64, - ) -> SystrayData { - // let cpu_usage_percentage = cpu_parameters - // .iter() - // .map(|cpu| f64::from(cpu.clone().parameters.unwrap_or_default().usage_percentage)) - // .sum::() - // .div(cpu_parameters.len() as f64); - // let gpu_usage_percentage = gpu_parameters - // .iter() - // .map(|gpu| f64::from(gpu.clone().parameters.unwrap_or_default().usage_percentage)) - // .sum::() - // .div(gpu_parameters.len() as f64); - SystrayData { - cpu_hashrate, - gpu_hashrate, - // cpu_usage: cpu_usage_percentage, - // gpu_usage: gpu_usage_percentage, - estimated_earning, - } - } - - pub fn get_systray(&self) -> &SystemTray { - &self.systray - } - - pub fn current() -> &'static SystemtrayManager { - &INSTANCE - } -} diff --git a/src-tauri/src/telemetry_manager.rs b/src-tauri/src/telemetry_manager.rs index 97af722ce..218ec6ee3 100644 --- a/src-tauri/src/telemetry_manager.rs +++ b/src-tauri/src/telemetry_manager.rs @@ -26,6 +26,7 @@ use std::{sync::Arc, thread::sleep, time::Duration}; use tari_common::configuration::Network; use tari_core::transactions::tari_amount::MicroMinotari; use tari_utilities::encoding::MBase58; +use tauri::Emitter; use tokio::sync::RwLock; use tokio_util::sync::CancellationToken; diff --git a/src-tauri/src/user_listener.rs b/src-tauri/src/user_listener.rs index 85b25edf2..e0c4545a8 100644 --- a/src-tauri/src/user_listener.rs +++ b/src-tauri/src/user_listener.rs @@ -1,5 +1,6 @@ use device_query::{DeviceQuery, DeviceState}; use log::{error, info}; +use tauri::Emitter; use tokio::time::{sleep, Duration}; use tokio_util::sync::CancellationToken; diff --git a/src-tauri/src/utils/shutdown_utils.rs b/src-tauri/src/utils/shutdown_utils.rs index 37593c0d0..8046d7a49 100644 --- a/src-tauri/src/utils/shutdown_utils.rs +++ b/src-tauri/src/utils/shutdown_utils.rs @@ -1,21 +1,25 @@ use crate::{UniverseAppState, APPLICATION_FOLDER_ID}; use log::info; -use tauri::api::path::local_data_dir; +use tauri::Manager; static LOG_TARGET: &str = "tari::universe::shutdown_utils"; pub async fn stop_all_processes( - state: UniverseAppState, + app_handle: tauri::AppHandle, should_shutdown: bool, ) -> Result<(), String> { info!(target: LOG_TARGET, "Stopping all miners"); - info!(target: LOG_TARGET, "Entering shutdown sequence"); - if should_shutdown { + let state = app_handle.state::().inner(); + + if should_shutdown && !state.shutdown.is_triggered() { + info!(target: LOG_TARGET, "Entering shutdown sequence"); state.shutdown.clone().trigger(); } - let base_path = local_data_dir() + let base_path = app_handle + .path() + .local_data_dir() .expect("Could not get data dir") .join(APPLICATION_FOLDER_ID); @@ -27,8 +31,8 @@ pub async fn stop_all_processes( if cpu_miner_is_running || cpu_miner_pid_file_exists { cpu_miner.stop().await.map_err(|e| e.to_string())?; - drop(cpu_miner); } + drop(cpu_miner); let gpu_miner = state.gpu_miner.read().await; let gpu_miner_pid_file_exists = gpu_miner.is_pid_file_exists(base_path.clone()).await; @@ -38,10 +42,10 @@ pub async fn stop_all_processes( if gpu_miner_is_running || gpu_miner_pid_file_exists { gpu_miner.stop().await.map_err(|e| e.to_string())?; - drop(gpu_miner); } + drop(gpu_miner); - let wallet_manager = state.wallet_manager; + let wallet_manager = state.wallet_manager.clone(); let wallet_manager_is_running = wallet_manager.is_running().await; let wallet_manager_pid_file_exists = wallet_manager.is_pid_file_exists(base_path.clone()).await; @@ -51,7 +55,7 @@ pub async fn stop_all_processes( wallet_manager.stop().await.map_err(|e| e.to_string())?; } - let node_manager = state.node_manager; + let node_manager = state.node_manager.clone(); let node_manager_is_running = node_manager.is_running().await; let node_manager_pid_file_exists = node_manager.is_pid_file_exists(base_path.clone()).await; @@ -61,7 +65,7 @@ pub async fn stop_all_processes( node_manager.stop().await.map_err(|e| e.to_string())?; } - let mm_proxy_manager = state.mm_proxy_manager; + let mm_proxy_manager = state.mm_proxy_manager.clone(); let mm_proxy_manager_is_running = mm_proxy_manager.is_running().await; let mm_proxy_manager_pid_file_exists = mm_proxy_manager.is_pid_file_exists(base_path.clone()).await; @@ -72,7 +76,7 @@ pub async fn stop_all_processes( mm_proxy_manager.stop().await.map_err(|e| e.to_string())?; } - let p2pool_manager = state.p2pool_manager; + let p2pool_manager = state.p2pool_manager.clone(); let p2pool_manager_is_running = p2pool_manager.is_running().await; let p2pool_manager_pid_file_exists = p2pool_manager.is_pid_file_exists(base_path.clone()).await; @@ -82,7 +86,7 @@ pub async fn stop_all_processes( p2pool_manager.stop().await.map_err(|e| e.to_string())?; } - let tor_manager = state.tor_manager; + let tor_manager = state.tor_manager.clone(); let tor_manager_is_running = tor_manager.is_running().await; let tor_manager_pid_file_exists = tor_manager.is_pid_file_exists(base_path.clone()).await; @@ -92,7 +96,7 @@ pub async fn stop_all_processes( tor_manager.stop().await.map_err(|e| e.to_string())?; } - if should_shutdown { + if should_shutdown && !state.shutdown.is_triggered() { state.shutdown.clone().trigger(); } diff --git a/src-tauri/src/xmrig_adapter.rs b/src-tauri/src/xmrig_adapter.rs index 5a6ea86cf..750602acf 100644 --- a/src-tauri/src/xmrig_adapter.rs +++ b/src-tauri/src/xmrig_adapter.rs @@ -108,6 +108,7 @@ impl ProcessAdapter for XmrigAdapter { )); #[allow(clippy::collapsible_match)] // don't specify threads for ludicrous mode + #[allow(clippy::collapsible_match)] if let Some(cpu_threads) = self.cpu_threads { if let Some(cpu_threads) = cpu_threads { args.push(format!("--threads={}", cpu_threads)); diff --git a/src-tauri/tauri.conf.json b/src-tauri/tauri.conf.json index 97e5f8639..3e2030781 100644 --- a/src-tauri/tauri.conf.json +++ b/src-tauri/tauri.conf.json @@ -1,57 +1,59 @@ { + "version": "0.8.7", + "productName": "Tari Universe (Alpha)", + "mainBinaryName": "Tari Universe (Alpha)", + "identifier": "com.tari.universe.alpha", "build": { "beforeDevCommand": "npm run dev", "beforeBuildCommand": "npm run build", - "devPath": "http://localhost:1420", - "distDir": "../dist", - "withGlobalTauri": true + "frontendDist": "../dist", + "devUrl": "http://localhost:1420" }, - "package": { - "productName": "Tari Universe (Alpha)", - "version": "0.8.7" - }, - "tauri": { - "systemTray": { - "iconPath": "icons/systray_icon.ico", - "menuOnLeftClick": true + "bundle": { + "active": true, + "targets": ["deb", "rpm", "appimage", "msi", "dmg"], + "macOS": { + "providerShortName": "Tari Labs, LLC" }, - "updater": { - "active": true, - "endpoints": [ - "https://raw.githubusercontent.com/tari-project/universe/main/.updater/alpha-latest.json" - ], - "dialog": false, - "pubkey": "dW50cnVzdGVkIGNvbW1lbnQ6IG1pbmlzaWduIHB1YmxpYyBrZXk6IEYxNUJBOEFEQkQ4RjJBMjYKUldRbUtvKzlyYWhiOFJIUmFFditENVV3d3hRbjNlZm1DMi9aMjluRUpVdHhQTytadTV3ODN3bUMK" - }, - "allowlist": { - "all": false, - "shell": { - "all": false, - "open": true, - "sidecar": false - }, - "window": { - "all": false, - "close": true, - "hide": true, - "show": true, - "maximize": true, - "minimize": true, - "unmaximize": true, - "unminimize": true, - "startDragging": true - }, - "os": { - "all": true - } + "icon": [ + "icons/32x32.png", + "icons/128x128.png", + "icons/128x128@2x.png", + "icons/icon.icns", + "icons/icon.ico", + "icons/icon.png", + "icons/StoreLogo.png", + "icons/systray_icon.icns", + "icons/systray_icon.ico", + "icons/systray_icon.png" + ], + "copyright": "Copyright (c) 2024 Tari Labs, LLC", + "shortDescription": "Tari Universe is a mining app for Tari.", + "longDescription": "Introducing Tari Universe, the beautifully simple mining app for Tari. Install it on your Mac or PC and start mining Tari with one click.", + "publisher": "Tari Labs, LLC", + "createUpdaterArtifacts": true + }, + "app": { + "security": { + "capabilities": ["desktop-capability", "default", "migrated"], + "csp": null }, - "pattern": { - "use": "isolation", - "options": { - "dir": "../dist-isolation" - } + "trayIcon": { + "id": "universe-tray-id", + "iconPath": "icons/systray_icon.ico", + "iconAsTemplate": true }, + "macOSPrivateApi": true, + "withGlobalTauri": true, "windows": [ + { + "title": "Tari Universe (Alpha) | Testnet", + "width": 1380, + "height": 780, + "label": "splashscreen", + "url": "/splash.html", + "center": true + }, { "title": "Tari Universe (Alpha) | Testnet", "label": "main", @@ -64,43 +66,16 @@ "transparent": false, "visible": false, "center": true - }, - { - "title": "Tari Universe (Alpha) | Testnet", - "width": 1380, - "height": 780, - "label": "splashscreen", - "url": "splash.html", - "center": true } - ], - "security": { - "csp": null - }, - "bundle": { - "active": true, - "targets": "all", - "identifier": "com.tari.universe.alpha", - "icon": [ - "icons/32x32.png", - "icons/128x128.png", - "icons/128x128@2x.png", - "icons/icon.icns", - "icons/icon.ico", - "icons/icon.png", - "icons/StoreLogo.png", - "icons/systray_icon.icns", - "icons/systray_icon.ico", - "icons/systray_icon.png" - ], - "copyright": "Copyright (c) 2024 Tari Labs, LLC", - "shortDescription": "Tari Universe is a mining app for Tari.", - "longDescription": "Introducing Tari Universe, the beautifully simple mining app for Tari. Install it on your Mac or PC and start mining Tari with one click.", - "publisher": "Tari Labs, LLC", - "macOS": { - "providerShortName": "Tari Labs, LLC" + ] + }, + "plugins": { + "updater": { + "pubkey": "dW50cnVzdGVkIGNvbW1lbnQ6IG1pbmlzaWduIHB1YmxpYyBrZXk6IEYxNUJBOEFEQkQ4RjJBMjYKUldRbUtvKzlyYWhiOFJIUmFFditENVV3d3hRbjNlZm1DMi9aMjluRUpVdHhQTytadTV3ODN3bUMK", + "endpoints": ["https://raw.githubusercontent.com/tari-project/universe/main/.updater/alpha-latest.json"], + "windows": { + "installMode": "passive" } - }, - "macOSPrivateApi": true + } } -} \ No newline at end of file +} diff --git a/src/App/App.tsx b/src/App/App.tsx index 89f4c654c..fe0fa1d7b 100644 --- a/src/App/App.tsx +++ b/src/App/App.tsx @@ -1,7 +1,8 @@ -import { AppContentContainer } from '@app/App/App.styles'; import * as Sentry from '@sentry/react'; import { useEffect } from 'react'; -import { useShuttingDown } from '@app/hooks/useShuttingDown'; +import { AppContentContainer } from '@app/App/App.styles'; +import { useShuttingDown } from '@app/hooks'; + import { useAppStateStore } from '@app/store/appStateStore'; import { LazyMotion, domMax, MotionConfig, AnimatePresence } from 'framer-motion'; import { useUIStore } from '@app/store/useUIStore.ts'; @@ -18,6 +19,9 @@ import ThemeProvider from '../theme/ThemeProvider.tsx'; export default function App() { const isShuttingDown = useShuttingDown(); const isSettingUp = useAppStateStore((s) => s.isSettingUp); + + const showSetup = isSettingUp && !isShuttingDown; + const setError = useAppStateStore((s) => s.setError); const setIsWebglNotSupported = useUIStore((s) => s.setIsWebglNotSupported); const { t } = useTranslation('common', { useSuspense: false }); @@ -51,12 +55,12 @@ export default function App() { - {!isShuttingDown && isSettingUp ? ( + {showSetup ? ( ) : null} - {isShuttingDown || isSettingUp ? null : ( + {isShuttingDown || showSetup ? null : ( diff --git a/src/App/AppWrapper.tsx b/src/App/AppWrapper.tsx index cbae896ca..015ff18e2 100644 --- a/src/App/AppWrapper.tsx +++ b/src/App/AppWrapper.tsx @@ -1,15 +1,21 @@ -import { IGNORE_FETCHING } from '@app/App/sentryIgnore'; -import { useDisableRefresh } from '@app/hooks/useDisableRefresh'; -import { useListenForExternalDependencies } from '@app/hooks/useListenForExternalDependencies'; -import { useUpdateListener } from '@app/hooks/useUpdateStatus'; -import * as Sentry from '@sentry/react'; import { useEffect } from 'react'; +import { defaultOptions } from 'tauri-plugin-sentry-api'; +import * as Sentry from '@sentry/react'; +import { IGNORE_FETCHING } from '@app/App/sentryIgnore'; +import { initSystray } from '@app/utils'; + +import { + useCheckUpdate, + useDetectMode, + useDisableRefresh, + useInterval, + useLangaugeResolver, + useListenForExternalDependencies, +} from '@app/hooks'; import packageInfo from '../../package.json'; -import { useLangaugeResolver } from '../hooks/useLanguageResolver.ts'; import { useAppConfigStore } from '../store/useAppConfigStore.ts'; -import { setupLogger } from '../utils/shared-logger.ts'; -import { useDetectMode } from '../hooks/helpers/useDetectMode.ts'; +import setupLogger from '../utils/shared-logger.ts'; import App from './App.tsx'; import useListenForCriticalProblem from '@app/hooks/useListenForCriticalProblem.tsx'; import { useMiningStore } from '@app/store/useMiningStore.ts'; @@ -18,6 +24,7 @@ import { useMiningStore } from '@app/store/useMiningStore.ts'; const environment = import.meta.env.MODE; const sentryOptions = { + ...defaultOptions, dsn: 'https://edd6b9c1494eb7fda6ee45590b80bcee@o4504839079002112.ingest.us.sentry.io/4507979991285760', integrations: [Sentry.captureConsoleIntegration({ levels: ['warn', 'error'] }), Sentry.extraErrorDataIntegration()], release: packageInfo.version, @@ -33,20 +40,25 @@ const sentryOptions = { setupLogger(); +const UPDATE_CHECK_INTERVAL = 1000 * 60 * 60; // 1 hour + export default function AppWrapper() { const allowTelemetry = useAppConfigStore((s) => s.allow_telemetry); const fetchAppConfig = useAppConfigStore((s) => s.fetchAppConfig); const setMiningNetwork = useMiningStore((s) => s.setMiningNetwork); + const checkUpdateTariUniverse = useCheckUpdate(); useDetectMode(); useDisableRefresh(); - useUpdateListener(); useLangaugeResolver(); useListenForExternalDependencies(); useListenForCriticalProblem(); + useEffect(() => { async function initialize() { await fetchAppConfig(); + checkUpdateTariUniverse(); // first check + await initSystray(); await setMiningNetwork(); } initialize(); @@ -61,5 +73,7 @@ export default function AppWrapper() { } }, [allowTelemetry]); + useInterval(() => checkUpdateTariUniverse(), UPDATE_CHECK_INTERVAL); + return ; } diff --git a/src/components/dialogs/RestartDialog.tsx b/src/components/dialogs/RestartDialog.tsx index a040ad012..4ff1af047 100644 --- a/src/components/dialogs/RestartDialog.tsx +++ b/src/components/dialogs/RestartDialog.tsx @@ -1,6 +1,6 @@ import { useCallback, useState } from 'react'; import { useTranslation } from 'react-i18next'; -import { invoke } from '@tauri-apps/api/tauri'; +import { invoke } from '@tauri-apps/api/core'; import { Dialog, DialogContent } from '@app/components/elements/dialog/Dialog.tsx'; import { Stack } from '@app/components/elements/Stack.tsx'; import { Typography } from '@app/components/elements/Typography.tsx'; diff --git a/src/components/dialogs/SendLogsDialog.tsx b/src/components/dialogs/SendLogsDialog.tsx index 275c19080..4ee9a67e1 100644 --- a/src/components/dialogs/SendLogsDialog.tsx +++ b/src/components/dialogs/SendLogsDialog.tsx @@ -1,6 +1,6 @@ import { useCallback, useState } from 'react'; import { useTranslation } from 'react-i18next'; -import { invoke } from '@tauri-apps/api/tauri'; +import { invoke } from '@tauri-apps/api/core'; import { useUIStore } from '@app/store/useUIStore.ts'; import { Dialog, DialogContent } from '@app/components/elements/dialog/Dialog.tsx'; diff --git a/src/containers/floating/AutoUpdateDialog/AutoUpdateDialog.tsx b/src/containers/floating/AutoUpdateDialog/AutoUpdateDialog.tsx index cc21c120a..0188ba249 100644 --- a/src/containers/floating/AutoUpdateDialog/AutoUpdateDialog.tsx +++ b/src/containers/floating/AutoUpdateDialog/AutoUpdateDialog.tsx @@ -1,32 +1,44 @@ -import { useUIStore } from '@app/store/useUIStore'; - import { useTranslation } from 'react-i18next'; -import { SquaredButton } from '@app/components/elements/buttons/SquaredButton'; +import { useUIStore } from '@app/store/useUIStore'; +import { useHandleUpdate } from '@app/hooks'; + import { DialogContent, Dialog } from '@app/components/elements/dialog/Dialog'; +import { SquaredButton } from '@app/components/elements/buttons/SquaredButton'; import { Typography } from '@app/components/elements/Typography'; -import { ButtonsWrapper } from './AutoUpdateDialog.styles'; -import { useHandleUpdate, useUpdateStatus } from '@app/hooks/useUpdateStatus'; + import { UpdatedStatus } from './UpdatedStatus'; +import { ButtonsWrapper } from './AutoUpdateDialog.styles'; +import { useEffect, useRef } from 'react'; export default function AutoUpdateDialog() { + const hasFetched = useRef(false); + const { handleUpdate, fetchUpdate, updateData, isLoading, contentLength, downloaded, handleClose } = + useHandleUpdate(); const { t } = useTranslation('setup-view', { useSuspense: false }); - const { handleUpdate, handleClose, isLoading } = useHandleUpdate(); - const { contentLength, downloaded } = useUpdateStatus(); const open = useUIStore((s) => s.dialogToShow === 'autoUpdate'); - const latestVersion = useUIStore((s) => s.latestVersion); - const subtitle = isLoading ? 'installing-latest-version' : 'would-you-like-to-install'; + useEffect(() => { + if (hasFetched.current) return; + fetchUpdate().then(() => { + hasFetched.current = true; + }); + }, [fetchUpdate]); + const subtitle = isLoading ? 'installing-latest-version' : 'would-you-like-to-install'; return ( {t('new-tari-version-available')} - {t(subtitle, { version: latestVersion })} + {t(subtitle, { version: updateData?.version })} {isLoading && } + + {downloaded > 0 && downloaded === contentLength ? ( + {`Update downloaded: Restarting Tari Universe`} + ) : null} - {!isLoading && ( + {!isLoading && updateData && ( <> handleClose()} color="warning"> {t('no')} diff --git a/src/containers/floating/AutoUpdateDialog/UpdatedStatus.tsx b/src/containers/floating/AutoUpdateDialog/UpdatedStatus.tsx index 356851c6f..f93d8f4b8 100644 --- a/src/containers/floating/AutoUpdateDialog/UpdatedStatus.tsx +++ b/src/containers/floating/AutoUpdateDialog/UpdatedStatus.tsx @@ -19,9 +19,9 @@ export function UpdatedStatus({ contentLength, downloaded }: UpdatedStatusProps) const shouldShowProgress = contentLength > 0; return ( - + - + {shouldShowProgress && ( {`${formatSize(downloaded)} / ${formatSize(contentLength)}`} diff --git a/src/containers/floating/CriticalErrorDialog/CriticalErrorDialog.tsx b/src/containers/floating/CriticalErrorDialog/CriticalErrorDialog.tsx index 60711eca3..b18665e8a 100644 --- a/src/containers/floating/CriticalErrorDialog/CriticalErrorDialog.tsx +++ b/src/containers/floating/CriticalErrorDialog/CriticalErrorDialog.tsx @@ -6,12 +6,12 @@ import { Typography } from '@app/components/elements/Typography'; import { IoAlertCircleOutline, IoCheckmarkOutline, IoCopyOutline } from 'react-icons/io5'; import { Trans, useTranslation } from 'react-i18next'; import { useAppStateStore } from '@app/store/appStateStore'; -import { invoke } from '@tauri-apps/api'; +import { invoke } from '@tauri-apps/api/core'; import { useCallback, useState } from 'react'; import { CircularProgress } from '@app/components/elements/CircularProgress'; import { SendLogsDialog } from '@app/components/dialogs/SendLogsDialog.tsx'; import { useUIStore } from '@app/store/useUIStore.ts'; -import { useCopyToClipboard } from '@app/hooks/helpers/useCopyToClipboard.ts'; +import { useCopyToClipboard } from '@app/hooks'; import { SquaredButton } from '@app/components/elements/buttons/SquaredButton.tsx'; import { IconButton } from '@app/components/elements/buttons/IconButton'; import { TextButton } from '@app/components/elements/buttons/TextButton.tsx'; diff --git a/src/containers/floating/CriticalProblemDialog/CriticalProblemDialog.tsx b/src/containers/floating/CriticalProblemDialog/CriticalProblemDialog.tsx index 631ee97e7..c6c2f2d9d 100644 --- a/src/containers/floating/CriticalProblemDialog/CriticalProblemDialog.tsx +++ b/src/containers/floating/CriticalProblemDialog/CriticalProblemDialog.tsx @@ -4,7 +4,8 @@ import { Dialog, DialogContent } from '@app/components/elements/dialog/Dialog'; import { Stack } from '@app/components/elements/Stack'; import { Typography } from '@app/components/elements/Typography'; import { useAppStateStore } from '@app/store/appStateStore'; -import { invoke } from '@tauri-apps/api'; +import { invoke } from '@tauri-apps/api/core'; + import { useCallback, useState } from 'react'; import { useTranslation } from 'react-i18next'; diff --git a/src/containers/floating/ExternalDependenciesDialog/ExternalDependenciesDialog.tsx b/src/containers/floating/ExternalDependenciesDialog/ExternalDependenciesDialog.tsx index ec2df6c6e..2484f368c 100644 --- a/src/containers/floating/ExternalDependenciesDialog/ExternalDependenciesDialog.tsx +++ b/src/containers/floating/ExternalDependenciesDialog/ExternalDependenciesDialog.tsx @@ -6,7 +6,7 @@ import { Typography } from '@app/components/elements/Typography'; import { useAppStateStore } from '@app/store/appStateStore'; import { useUIStore } from '@app/store/useUIStore'; import { ExternalDependencyStatus } from '@app/types/app-status'; -import { invoke } from '@tauri-apps/api/tauri'; +import { invoke } from '@tauri-apps/api/core'; import { useCallback, useState } from 'react'; import { ExternalDependencyCard } from './ExternalDependencyCard'; import { useTranslation } from 'react-i18next'; diff --git a/src/containers/floating/ExternalDependenciesDialog/ExternalDependencyCard.tsx b/src/containers/floating/ExternalDependenciesDialog/ExternalDependencyCard.tsx index 1a92e2697..6c3c60383 100644 --- a/src/containers/floating/ExternalDependenciesDialog/ExternalDependencyCard.tsx +++ b/src/containers/floating/ExternalDependenciesDialog/ExternalDependencyCard.tsx @@ -6,7 +6,7 @@ import { ExternalDependency, ExternalDependencyStatus } from '@app/types/app-sta import { IoArrowDownCircleOutline } from 'react-icons/io5'; import { useAppStateStore } from '@app/store/appStateStore'; import { useCallback } from 'react'; -import { invoke } from '@tauri-apps/api/tauri'; +import { invoke } from '@tauri-apps/api/core'; import { useTranslation } from 'react-i18next'; import { Button } from '@app/components/elements/buttons/Button.tsx'; diff --git a/src/containers/floating/PaperWalletModal/sections/ConnectSection/ConnectSection.tsx b/src/containers/floating/PaperWalletModal/sections/ConnectSection/ConnectSection.tsx index 0922be140..b24a6c0cc 100644 --- a/src/containers/floating/PaperWalletModal/sections/ConnectSection/ConnectSection.tsx +++ b/src/containers/floating/PaperWalletModal/sections/ConnectSection/ConnectSection.tsx @@ -12,7 +12,7 @@ import qrTooltipImage from '../../images/qr-tooltip.png'; import { useTranslation } from 'react-i18next'; import { useCallback, useState } from 'react'; import { usePaperWalletStore } from '@app/store/usePaperWalletStore'; -import { invoke } from '@tauri-apps/api/tauri'; +import { invoke } from '@tauri-apps/api/core'; import LoadingSvg from '@app/components/svgs/LoadingSvg'; interface Props { diff --git a/src/containers/floating/Settings/components/Navigation.tsx b/src/containers/floating/Settings/components/Navigation.tsx index 8e45999fa..4c33121e3 100644 --- a/src/containers/floating/Settings/components/Navigation.tsx +++ b/src/containers/floating/Settings/components/Navigation.tsx @@ -4,7 +4,7 @@ import { Typography } from '@app/components/elements/Typography'; import { SETTINGS_TYPES, SettingsType } from '../types.ts'; import { ButtonContainer, Container, SectionButton, TermsBtn } from './Navigation.styles.ts'; -import { open } from '@tauri-apps/api/shell'; +import { open } from '@tauri-apps/plugin-shell'; interface SettingsNavigationProps { activeSection: SettingsType; onChangeActiveSection: (section: SettingsType) => void; diff --git a/src/containers/floating/Settings/sections/airdrop/ApplyInviteCode.tsx b/src/containers/floating/Settings/sections/airdrop/ApplyInviteCode.tsx index 7fb3bbeec..21eae8652 100644 --- a/src/containers/floating/Settings/sections/airdrop/ApplyInviteCode.tsx +++ b/src/containers/floating/Settings/sections/airdrop/ApplyInviteCode.tsx @@ -15,7 +15,7 @@ import { v4 as uuidv4 } from 'uuid'; import { useAirdropStore } from '@app/store/useAirdropStore'; import { useAppConfigStore } from '@app/store/useAppConfigStore'; -import { open } from '@tauri-apps/api/shell'; +import { open } from '@tauri-apps/plugin-shell'; import { CircularProgress } from '@app/components/elements/CircularProgress.tsx'; export const ApplyInviteCode = () => { diff --git a/src/containers/floating/Settings/sections/experimental/AppVersions.tsx b/src/containers/floating/Settings/sections/experimental/AppVersions.tsx index 231602c07..22b1cd196 100644 --- a/src/containers/floating/Settings/sections/experimental/AppVersions.tsx +++ b/src/containers/floating/Settings/sections/experimental/AppVersions.tsx @@ -1,9 +1,10 @@ import { useTranslation } from 'react-i18next'; + import { Typography } from '@app/components/elements/Typography.tsx'; import { CardComponent } from '@app/containers/floating/Settings/components/Card.component'; import { CardContainer } from '@app/containers/floating/Settings/components/Settings.styles'; import { SettingsGroupWrapper } from '@app/containers/floating/Settings/components/SettingsGroup.styles'; -import { Environment, useEnvironment } from '@app/hooks/useEnvironment.ts'; +import { Environment, useEnvironment } from '@app/hooks'; import { Stack } from '@app/components/elements/Stack.tsx'; import { useAppStateStore } from '@app/store/appStateStore'; diff --git a/src/containers/floating/Settings/sections/experimental/P2poolMarkup.tsx b/src/containers/floating/Settings/sections/experimental/P2poolMarkup.tsx index 627af6e0c..3d162d3e7 100644 --- a/src/containers/floating/Settings/sections/experimental/P2poolMarkup.tsx +++ b/src/containers/floating/Settings/sections/experimental/P2poolMarkup.tsx @@ -16,7 +16,7 @@ import { SettingsGroupTitle, SettingsGroupAction, } from '../../components/SettingsGroup.styles'; -import { invoke } from '@tauri-apps/api/tauri'; +import { invoke } from '@tauri-apps/api/core'; export const ErrorTypography = styled(Typography)(({ theme }) => ({ color: theme.palette.error.main, diff --git a/src/containers/floating/Settings/sections/experimental/TorMarkup/TorDebug.tsx b/src/containers/floating/Settings/sections/experimental/TorMarkup/TorDebug.tsx index 7aa1d39ad..1be376722 100644 --- a/src/containers/floating/Settings/sections/experimental/TorMarkup/TorDebug.tsx +++ b/src/containers/floating/Settings/sections/experimental/TorMarkup/TorDebug.tsx @@ -1,6 +1,6 @@ import { useEffect, useState } from 'react'; import { useTranslation } from 'react-i18next'; -import { invoke } from '@tauri-apps/api/tauri'; +import { invoke } from '@tauri-apps/api/core'; import { Typography } from '@app/components/elements/Typography'; import { useAppStateStore } from '@app/store/appStateStore'; diff --git a/src/containers/floating/Settings/sections/experimental/TorMarkup/TorMarkup.tsx b/src/containers/floating/Settings/sections/experimental/TorMarkup/TorMarkup.tsx index c0fc04644..cd7bcf545 100644 --- a/src/containers/floating/Settings/sections/experimental/TorMarkup/TorMarkup.tsx +++ b/src/containers/floating/Settings/sections/experimental/TorMarkup/TorMarkup.tsx @@ -1,10 +1,11 @@ +import { invoke } from '@tauri-apps/api/core'; import { useCallback, useEffect, useMemo, useRef, useState } from 'react'; import { Trans, useTranslation } from 'react-i18next'; -import { invoke } from '@tauri-apps/api/tauri'; import { useUIStore } from '@app/store/useUIStore.ts'; import { useAppConfigStore } from '@app/store/useAppConfigStore.ts'; import { ToggleSwitch } from '@app/components/elements/ToggleSwitch.tsx'; + import { Typography } from '@app/components/elements/Typography'; import { TorConfig } from '@app/types/app-status'; import { Input } from '@app/components/elements/inputs/Input'; @@ -22,7 +23,7 @@ import { import { TorDebug } from './TorDebug'; import { ErrorTypography, StyledInput, TorSettingsContainer } from './TorMarkup.styles'; -import { type } from '@tauri-apps/api/os'; +import { type } from '@tauri-apps/plugin-os'; interface EditedTorConfig { // it's also string here to prevent an empty value @@ -54,9 +55,9 @@ export const TorMarkup = () => { const hasCheckedOs = useRef(false); const checkPlatform = useCallback(async () => { - const osType = await type(); + const osType = type(); if (osType) { - setIsMac(osType === 'Darwin'); + setIsMac(osType === 'macos'); hasCheckedOs.current = true; } diff --git a/src/containers/floating/Settings/sections/general/LogsSettings.tsx b/src/containers/floating/Settings/sections/general/LogsSettings.tsx index db67e32a6..53556c56b 100644 --- a/src/containers/floating/Settings/sections/general/LogsSettings.tsx +++ b/src/containers/floating/Settings/sections/general/LogsSettings.tsx @@ -1,6 +1,18 @@ -import { Typography } from '@app/components/elements/Typography.tsx'; +import { IoCheckmarkOutline, IoCopyOutline } from 'react-icons/io5'; + import { Trans, useTranslation } from 'react-i18next'; -import { invoke } from '@tauri-apps/api/tauri'; +import { invoke } from '@tauri-apps/api/core'; + +import { useUIStore } from '@app/store/useUIStore.ts'; + +import { Button } from '@app/components/elements/buttons/Button.tsx'; +import { SendLogsDialog } from '@app/components/dialogs/SendLogsDialog.tsx'; +import { Typography } from '@app/components/elements/Typography.tsx'; +import { Stack } from '@app/components/elements/Stack.tsx'; +import { IconButton } from '@app/components/elements/buttons/IconButton.tsx'; +import { useCopyToClipboard } from '@app/hooks'; +import { useAppStateStore } from '@app/store/appStateStore.ts'; + import { SettingsGroup, SettingsGroupAction, @@ -8,16 +20,6 @@ import { SettingsGroupTitle, SettingsGroupWrapper, } from '../../components/SettingsGroup.styles.ts'; -import { Button } from '@app/components/elements/buttons/Button.tsx'; -import { SendLogsDialog } from '@app/components/dialogs/SendLogsDialog.tsx'; -import { useUIStore } from '@app/store/useUIStore.ts'; - -import { useCopyToClipboard } from '@app/hooks/helpers/useCopyToClipboard.ts'; -import { Stack } from '@app/components/elements/Stack.tsx'; - -import { IoCheckmarkOutline, IoCopyOutline } from 'react-icons/io5'; -import { IconButton } from '@app/components/elements/buttons/IconButton.tsx'; -import { useAppStateStore } from '@app/store/appStateStore.ts'; export default function LogsSettings() { const { t } = useTranslation(['common', 'settings'], { useSuspense: false }); diff --git a/src/containers/floating/Settings/sections/general/ResetSettingsButton.tsx b/src/containers/floating/Settings/sections/general/ResetSettingsButton.tsx index 540bf0ef0..010eca8bc 100644 --- a/src/containers/floating/Settings/sections/general/ResetSettingsButton.tsx +++ b/src/containers/floating/Settings/sections/general/ResetSettingsButton.tsx @@ -1,7 +1,8 @@ import { useCallback, useState } from 'react'; import { useTranslation } from 'react-i18next'; -import { invoke } from '@tauri-apps/api'; +import { invoke } from '@tauri-apps/api/core'; import { useAppStateStore } from '@app/store/appStateStore'; + import { Typography } from '@app/components/elements/Typography.tsx'; import { CircularProgress } from '@app/components/elements/CircularProgress.tsx'; import { Stack } from '@app/components/elements/Stack.tsx'; diff --git a/src/containers/floating/Settings/sections/releaseNotes/ReleaseNotes.tsx b/src/containers/floating/Settings/sections/releaseNotes/ReleaseNotes.tsx index af5107f10..47c8488a9 100644 --- a/src/containers/floating/Settings/sections/releaseNotes/ReleaseNotes.tsx +++ b/src/containers/floating/Settings/sections/releaseNotes/ReleaseNotes.tsx @@ -16,7 +16,7 @@ import tariIcon from './tari-icon.png'; import packageInfo from '../../../../../../package.json'; import { useTranslation } from 'react-i18next'; import { useUIStore } from '@app/store/useUIStore'; -import { checkUpdate } from '@tauri-apps/api/updater'; +import { check } from '@tauri-apps/plugin-updater'; const appVersion = packageInfo.version; const versionString = `v${appVersion}`; @@ -77,7 +77,8 @@ export const ReleaseNotes = () => { useEffect(() => { const checkForUpdates = async () => { - const { shouldUpdate } = await checkUpdate(); + const update = await check(); + const shouldUpdate = !!update?.available; setNeedsUpgrade(shouldUpdate); }; diff --git a/src/containers/floating/Settings/sections/wallet/MoneroAddressMarkup/MoneroAddressEditor.tsx b/src/containers/floating/Settings/sections/wallet/MoneroAddressMarkup/MoneroAddressEditor.tsx index 96c45835a..6228f83b2 100644 --- a/src/containers/floating/Settings/sections/wallet/MoneroAddressMarkup/MoneroAddressEditor.tsx +++ b/src/containers/floating/Settings/sections/wallet/MoneroAddressMarkup/MoneroAddressEditor.tsx @@ -4,7 +4,7 @@ import { IoCopyOutline, IoCheckmarkOutline, IoCloseOutline } from 'react-icons/i import { Stack } from '@app/components/elements/Stack.tsx'; import { Input } from '@app/components/elements/inputs/Input'; import styled from 'styled-components'; -import { useCopyToClipboard } from '@app/hooks/helpers/useCopyToClipboard.ts'; +import { useCopyToClipboard } from '@app/hooks'; import { IconButton } from '@app/components/elements/buttons/IconButton.tsx'; const moneroAddressRegex = /^4[0-9AB][1-9A-HJ-NP-Za-km-z]{93}$/; diff --git a/src/containers/floating/Settings/sections/wallet/MoneroSeedWords/MoneroSeedWordSettings.tsx b/src/containers/floating/Settings/sections/wallet/MoneroSeedWords/MoneroSeedWordSettings.tsx index 76ffb1ed8..7844d3d75 100644 --- a/src/containers/floating/Settings/sections/wallet/MoneroSeedWords/MoneroSeedWordSettings.tsx +++ b/src/containers/floating/Settings/sections/wallet/MoneroSeedWords/MoneroSeedWordSettings.tsx @@ -5,7 +5,7 @@ import { } from '@app/containers/floating/Settings/components/SettingsGroup.styles'; import { useCopyToClipboard } from '@app/hooks/helpers/useCopyToClipboard'; import { useCallback, useRef, useState } from 'react'; -import { invoke } from '@tauri-apps/api/tauri'; +import { invoke } from '@tauri-apps/api/core'; import { CircularProgress } from '@app/components/elements/CircularProgress.tsx'; import { IoCheckmarkOutline, IoCopyOutline, IoEyeOffOutline, IoEyeOutline } from 'react-icons/io5'; import { Stack } from '@app/components/elements/Stack.tsx'; diff --git a/src/containers/floating/Settings/sections/wallet/SeedWordsMarkup/SeedWordsEdit.tsx b/src/containers/floating/Settings/sections/wallet/SeedWordsMarkup/SeedWordsEdit.tsx index 6dba8ff8c..bc0417d90 100644 --- a/src/containers/floating/Settings/sections/wallet/SeedWordsMarkup/SeedWordsEdit.tsx +++ b/src/containers/floating/Settings/sections/wallet/SeedWordsMarkup/SeedWordsEdit.tsx @@ -95,7 +95,7 @@ export const SeedWordsEdit = ({ seedWords, seedWordsFetching, toggleEdit }: Seed [hasChanges] ); - const handleConfrimed = useCallback(async () => { + const handleConfirmed = useCallback(async () => { if (hasChanges && newSeedWords) { setShowConfirm(false); await importSeedWords(newSeedWords); @@ -174,7 +174,7 @@ export const SeedWordsEdit = ({ seedWords, seedWordsFetching, toggleEdit }: Seed setShowConfirm(false)}>{t('cancel')} - + {t('yes')} diff --git a/src/containers/floating/Settings/sections/wallet/SeedWordsMarkup/useGetSeedWords.ts b/src/containers/floating/Settings/sections/wallet/SeedWordsMarkup/useGetSeedWords.ts index 3e5302862..760e046ff 100644 --- a/src/containers/floating/Settings/sections/wallet/SeedWordsMarkup/useGetSeedWords.ts +++ b/src/containers/floating/Settings/sections/wallet/SeedWordsMarkup/useGetSeedWords.ts @@ -1,5 +1,5 @@ import { useCallback, useState } from 'react'; -import { invoke } from '@tauri-apps/api/tauri'; +import { invoke } from '@tauri-apps/api/core'; export function useGetSeedWords() { const [seedWords, setSeedWords] = useState([]); diff --git a/src/containers/floating/Settings/sections/wallet/WalletAddressMarkup.tsx b/src/containers/floating/Settings/sections/wallet/WalletAddressMarkup.tsx index 5e429653c..b1203da0b 100644 --- a/src/containers/floating/Settings/sections/wallet/WalletAddressMarkup.tsx +++ b/src/containers/floating/Settings/sections/wallet/WalletAddressMarkup.tsx @@ -12,7 +12,7 @@ import { styled } from 'styled-components'; import { BsArrowsExpandVertical, BsArrowsCollapseVertical } from 'react-icons/bs'; import { useWalletStore } from '@app/store/useWalletStore'; -import { useCopyToClipboard } from '@app/hooks/helpers/useCopyToClipboard.ts'; +import { useCopyToClipboard } from '@app/hooks'; import { useTranslation } from 'react-i18next'; const Dot = styled.div` diff --git a/src/containers/main/Airdrop/AirdropGiftTracker/AirdropGiftTracker.tsx b/src/containers/main/Airdrop/AirdropGiftTracker/AirdropGiftTracker.tsx index 36eb9c001..7502f6b3a 100644 --- a/src/containers/main/Airdrop/AirdropGiftTracker/AirdropGiftTracker.tsx +++ b/src/containers/main/Airdrop/AirdropGiftTracker/AirdropGiftTracker.tsx @@ -1,12 +1,14 @@ +import { useTranslation } from 'react-i18next'; + import { useAirdropStore } from '@app/store/useAirdropStore'; -import { Title, TitleWrapper, Wrapper } from './styles'; -import LoggedOut from './sections/LoggedOut/LoggedOut'; -import LoggedIn from './sections/LoggedIn/LoggedIn'; import { useAirdropSyncState } from '@app/hooks/airdrop/useAirdropSyncState'; -import { useTranslation } from 'react-i18next'; -import InfoTooltip from './components/InfoTooltip/InfoTooltip'; import { useWebsocket } from '@app/hooks/airdrop/useWebsocket.ts'; +import InfoTooltip from './components/InfoTooltip/InfoTooltip'; +import LoggedOut from './sections/LoggedOut/LoggedOut'; +import LoggedIn from './sections/LoggedIn/LoggedIn'; +import { Title, TitleWrapper, Wrapper } from './styles'; + export default function AirdropGiftTracker() { useAirdropSyncState(); useWebsocket(); diff --git a/src/containers/main/Airdrop/AirdropGiftTracker/sections/LoggedIn/segments/Flare/BonusGems/BonusGems.tsx b/src/containers/main/Airdrop/AirdropGiftTracker/sections/LoggedIn/segments/Flare/BonusGems/BonusGems.tsx index 217c4099f..f97655c89 100644 --- a/src/containers/main/Airdrop/AirdropGiftTracker/sections/LoggedIn/segments/Flare/BonusGems/BonusGems.tsx +++ b/src/containers/main/Airdrop/AirdropGiftTracker/sections/LoggedIn/segments/Flare/BonusGems/BonusGems.tsx @@ -1,9 +1,10 @@ import { useEffect } from 'react'; +import { useTranslation } from 'react-i18next'; + import GemsAnimation from '../GemsAnimation/GemsAnimation'; -import { Background, Wrapper } from './styles'; import { Number, Text, TextBottom, TextBottomPosition } from '../styles'; -import { useTranslation } from 'react-i18next'; import { formatNumber, FormatPreset } from '@app/utils/formatters'; +import { Background, Wrapper } from './styles'; interface Props { gems: number; diff --git a/src/containers/main/Airdrop/AirdropGiftTracker/sections/LoggedOut/LoggedOut.tsx b/src/containers/main/Airdrop/AirdropGiftTracker/sections/LoggedOut/LoggedOut.tsx index a5f56a324..3e8c6fd35 100644 --- a/src/containers/main/Airdrop/AirdropGiftTracker/sections/LoggedOut/LoggedOut.tsx +++ b/src/containers/main/Airdrop/AirdropGiftTracker/sections/LoggedOut/LoggedOut.tsx @@ -1,7 +1,7 @@ import { GIFT_GEMS, useAirdropStore } from '@app/store/useAirdropStore'; import { ClaimButton, GemPill, Image, Title, Wrapper } from './styles'; import { useCallback, useEffect, useState } from 'react'; -import { open } from '@tauri-apps/api/shell'; +import { open } from '@tauri-apps/plugin-shell'; import { v4 as uuidv4 } from 'uuid'; import ClaimModal from '../../components/ClaimModal/ClaimModal'; import { useTranslation } from 'react-i18next'; diff --git a/src/containers/main/MainView.tsx b/src/containers/main/MainView.tsx index ac9868260..2571c9662 100644 --- a/src/containers/main/MainView.tsx +++ b/src/containers/main/MainView.tsx @@ -1,11 +1,13 @@ +import { useUpdateSystemTray } from '@app/hooks'; + import { DashboardContainer } from '@app/theme/styles.ts'; import { Dashboard } from '@app/containers/main/Dashboard'; import SideBar from '@app/containers/main/SideBar/SideBar.tsx'; import { useAppConfigStore } from '@app/store/useAppConfigStore'; export default function MainView() { + useUpdateSystemTray(); const visualMode = useAppConfigStore((s) => s.visual_mode); - return ( diff --git a/src/containers/main/SideBar/Miner/Miner.tsx b/src/containers/main/SideBar/Miner/Miner.tsx index 745e2ef03..d55d77541 100644 --- a/src/containers/main/SideBar/Miner/Miner.tsx +++ b/src/containers/main/SideBar/Miner/Miner.tsx @@ -1,15 +1,17 @@ -import Tile from './components/Tile.tsx'; -import { MinerContainer, TileContainer, Unit } from './styles.ts'; - -import ModeSelect from './components/ModeSelect.tsx'; +import ModeSelect from '@app/containers/main/SideBar/Miner/components/ModeSelect'; +import { useTheme } from 'styled-components'; +import { Trans, useTranslation } from 'react-i18next'; import { useMiningStore } from '@app/store/useMiningStore.ts'; import { Typography } from '@app/components/elements/Typography.tsx'; import { useAppConfigStore } from '@app/store/useAppConfigStore.ts'; -import useMiningStatesSync from '@app/hooks/mining/useMiningStatesSync.ts'; -import { useTheme } from 'styled-components'; -import { Trans, useTranslation } from 'react-i18next'; + +import Tile from './components/Tile.tsx'; +import { MinerContainer, TileContainer, Unit } from './styles.ts'; + +import { useMiningStatesSync } from '@app/hooks'; + import { ExpandableTile } from '@app/containers/main/SideBar/Miner/components/ExpandableTile.tsx'; import { ExpandableTileItem, @@ -18,9 +20,9 @@ import { import { formatHashrate, formatNumber, FormatPreset } from '@app/utils/formatters.ts'; export default function Miner() { + useMiningStatesSync(); const theme = useTheme(); const { t } = useTranslation('mining-view', { useSuspense: false }); - useMiningStatesSync(); const miningInitiated = useMiningStore((s) => s.miningInitiated); const isCpuMiningEnabled = useAppConfigStore((s) => s.cpu_mining_enabled); diff --git a/src/containers/main/SideBar/components/Wallet/Wallet.tsx b/src/containers/main/SideBar/components/Wallet/Wallet.tsx index ae91da231..f1abb2617 100644 --- a/src/containers/main/SideBar/components/Wallet/Wallet.tsx +++ b/src/containers/main/SideBar/components/Wallet/Wallet.tsx @@ -1,6 +1,21 @@ import { useCallback, useState, useEffect } from 'react'; import { useBlockchainVisualisationStore } from '@app/store/useBlockchainVisualisationStore'; +import { useTranslation } from 'react-i18next'; +import { AnimatePresence } from 'framer-motion'; +import { IoEyeOutline, IoEyeOffOutline } from 'react-icons/io5'; import CharSpinner from '@app/components/CharSpinner/CharSpinner.tsx'; +import { formatNumber, FormatPreset } from '@app/utils/formatters.ts'; +import { Typography } from '@app/components/elements/Typography.tsx'; +import { Stack } from '@app/components/elements/Stack.tsx'; + +import { useWalletStore } from '@app/store/useWalletStore.ts'; +import { usePaperWalletStore } from '@app/store/usePaperWalletStore.ts'; +import { useAppConfigStore } from '@app/store/useAppConfigStore.ts'; + +import useFetchTx from '@app/hooks/mining/useTransactions.ts'; +import SyncTooltip from './SyncTooltip/SyncTooltip.tsx'; +import History from './History.tsx'; + import { BalanceVisibilityButton, CornerButton, @@ -13,18 +28,6 @@ import { WalletContainer, WalletCornerButtons, } from './Wallet.styles.ts'; -import { Typography } from '@app/components/elements/Typography.tsx'; -import { useTranslation } from 'react-i18next'; -import { IoEyeOutline, IoEyeOffOutline } from 'react-icons/io5'; -import { Stack } from '@app/components/elements/Stack.tsx'; -import { useWalletStore } from '@app/store/useWalletStore.ts'; -import { AnimatePresence } from 'framer-motion'; -import History from './History.tsx'; -import useFetchTx from '@app/hooks/mining/useTransactions.ts'; -import { usePaperWalletStore } from '@app/store/usePaperWalletStore.ts'; -import { useAppConfigStore } from '@app/store/useAppConfigStore.ts'; -import SyncTooltip from './SyncTooltip/SyncTooltip.tsx'; -import { formatNumber, FormatPreset } from '@app/utils/formatters.ts'; export default function Wallet() { const { t } = useTranslation('sidebar', { useSuspense: false }); diff --git a/src/containers/phase/Setup/Setup.tsx b/src/containers/phase/Setup/Setup.tsx index cd747ec6f..2b10d56a8 100644 --- a/src/containers/phase/Setup/Setup.tsx +++ b/src/containers/phase/Setup/Setup.tsx @@ -1,5 +1,5 @@ import Footer from '@app/containers/phase/Setup/components/Footer'; -import { useSetUp } from '@app/hooks/useSetUp'; +import { useSetUp } from '@app/hooks'; import HeroText from './components/HeroText'; import InfoNav from './components/InfoNav/InfoNav'; import { SetupWrapper } from '@app/containers/phase/Setup/Setup.styles'; diff --git a/src/hooks/app/index.ts b/src/hooks/app/index.ts new file mode 100644 index 000000000..c1549a44c --- /dev/null +++ b/src/hooks/app/index.ts @@ -0,0 +1,9 @@ +export * from './useDisableRefresh.ts'; +export * from './useEnvironment.ts'; +export * from './useHardwareStats.ts'; +export * from './useLanguageResolver.ts'; +export * from './useListenForExternalDependencies.ts'; +export * from './useSetUp.ts'; +export * from './useShuttingDown.ts'; +export * from './useSystemTray.ts'; +export * from './useUpdateStatus.ts'; diff --git a/src/hooks/useDisableRefresh.ts b/src/hooks/app/useDisableRefresh.ts similarity index 95% rename from src/hooks/useDisableRefresh.ts rename to src/hooks/app/useDisableRefresh.ts index 7be36d8ca..d87eae637 100644 --- a/src/hooks/useDisableRefresh.ts +++ b/src/hooks/app/useDisableRefresh.ts @@ -1,6 +1,6 @@ import { useEffect } from 'react'; -export const useDisableRefresh = () => { +export function useDisableRefresh() { useEffect(() => { if (process.env.NODE_ENV === 'development') { return; @@ -24,4 +24,4 @@ export const useDisableRefresh = () => { document.removeEventListener('contextmenu', contextmenuListener); }; }, []); -}; +} diff --git a/src/hooks/useEnvironment.ts b/src/hooks/app/useEnvironment.ts similarity index 82% rename from src/hooks/useEnvironment.ts rename to src/hooks/app/useEnvironment.ts index 4bd1903c4..bb690138e 100644 --- a/src/hooks/useEnvironment.ts +++ b/src/hooks/app/useEnvironment.ts @@ -6,10 +6,8 @@ export enum Environment { } export const useEnvironment = () => { - const environment = useMemo(() => { + return useMemo(() => { if (window.location.host.startsWith('localhost:')) return Environment.Development; return Environment.Production; }, []); - - return environment; }; diff --git a/src/hooks/useHardwareStats.ts b/src/hooks/app/useHardwareStats.ts similarity index 94% rename from src/hooks/useHardwareStats.ts rename to src/hooks/app/useHardwareStats.ts index 1ad972e2f..7fb940967 100644 --- a/src/hooks/useHardwareStats.ts +++ b/src/hooks/app/useHardwareStats.ts @@ -1,5 +1,5 @@ import { useMiningStore } from '@app/store/useMiningStore'; -import { HardwareParameters } from '../types/app-status'; +import { HardwareParameters } from '../../types/app-status'; import { useMemo } from 'react'; const roundTo = (num: number, precision = 2) => { @@ -7,7 +7,7 @@ const roundTo = (num: number, precision = 2) => { return Math.round(num * factor) / factor; }; -export const useHardwareStats = () => { +export function useHardwareStats() { const cpuHardwareStats = useMiningStore((s) => s.cpu.hardware); const gpuHardwareStats = useMiningStore((s) => s.gpu.hardware); @@ -43,4 +43,4 @@ export const useHardwareStats = () => { const doesAnyGpuHasReadings = gpuHardwareStats?.some((gpu) => gpu.status.is_reader_implemented); return { cpu, gpu, doesAnyCpuHasReadings, doesAnyGpuHasReadings }; -}; +} diff --git a/src/hooks/useLanguageResolver.ts b/src/hooks/app/useLanguageResolver.ts similarity index 85% rename from src/hooks/useLanguageResolver.ts rename to src/hooks/app/useLanguageResolver.ts index 423992171..9fe8686cf 100644 --- a/src/hooks/useLanguageResolver.ts +++ b/src/hooks/app/useLanguageResolver.ts @@ -1,4 +1,4 @@ -import { invoke } from '@tauri-apps/api/tauri'; +import { invoke } from '@tauri-apps/api/core'; import { useEffect } from 'react'; import { changeLanguage } from 'i18next'; diff --git a/src/hooks/useListenForExternalDependencies.ts b/src/hooks/app/useListenForExternalDependencies.ts similarity index 100% rename from src/hooks/useListenForExternalDependencies.ts rename to src/hooks/app/useListenForExternalDependencies.ts diff --git a/src/hooks/useSetUp.ts b/src/hooks/app/useSetUp.ts similarity index 92% rename from src/hooks/useSetUp.ts rename to src/hooks/app/useSetUp.ts index 5a4b06425..389c48fc8 100644 --- a/src/hooks/useSetUp.ts +++ b/src/hooks/app/useSetUp.ts @@ -1,14 +1,14 @@ import { useUIStore } from '@app/store/useUIStore'; import { useCallback, useEffect, useRef } from 'react'; import { listen } from '@tauri-apps/api/event'; -import { invoke } from '@tauri-apps/api/tauri'; +import { TauriEvent } from '../../types.ts'; -import { TauriEvent } from '../types.ts'; +import { invoke } from '@tauri-apps/api/core'; -import { useAppStateStore } from '../store/appStateStore.ts'; +import { useAppStateStore } from '../../store/appStateStore.ts'; import { useAirdropStore } from '@app/store/useAirdropStore.ts'; -import { useHandleAirdropTokensRefresh } from '@app/hooks/airdrop/stateHelpers/useAirdropTokensRefresh.ts'; +import { useHandleAirdropTokensRefresh } from '../airdrop/stateHelpers/useAirdropTokensRefresh.ts'; export function useSetUp() { const isInitializingRef = useRef(false); @@ -77,12 +77,12 @@ export function useSetUp() { unlistenPromise.then((unlisten) => unlisten()); }; }, [ - syncedAidropWithBackend, clearStorage, handlePostSetup, isAfterAutoUpdate, setCriticalError, setSetupDetails, adminShow, + syncedAidropWithBackend, ]); } diff --git a/src/hooks/useShuttingDown.ts b/src/hooks/app/useShuttingDown.ts similarity index 51% rename from src/hooks/useShuttingDown.ts rename to src/hooks/app/useShuttingDown.ts index 57baa9e59..298c2d059 100644 --- a/src/hooks/useShuttingDown.ts +++ b/src/hooks/app/useShuttingDown.ts @@ -1,24 +1,31 @@ +import { tray } from '@app/utils'; import { useEffect, useState } from 'react'; -import { appWindow } from '@tauri-apps/api/window'; +import { getCurrentWebviewWindow } from '@tauri-apps/api/webviewWindow'; import { resetAllStores } from '@app/store/create.ts'; +import { invoke } from '@tauri-apps/api/core'; +const appWindow = getCurrentWebviewWindow(); export function useShuttingDown() { const [isShuttingDown, setIsShuttingDown] = useState(false); useEffect(() => { - appWindow.onCloseRequested(async (e) => { + const ul = appWindow.onCloseRequested(async (event) => { if (!isShuttingDown) { setIsShuttingDown(true); - e.preventDefault(); + event.preventDefault(); } }); + return () => { + ul.then((unlisten) => unlisten()); + }; }, [isShuttingDown]); useEffect(() => { if (isShuttingDown) { - setTimeout(() => { + setTimeout(async () => { + tray?.close(); resetAllStores(); - appWindow.close(); + await invoke('exit_application'); }, 250); } }, [isShuttingDown]); diff --git a/src/hooks/app/useSystemTray.ts b/src/hooks/app/useSystemTray.ts new file mode 100644 index 000000000..038ae8b35 --- /dev/null +++ b/src/hooks/app/useSystemTray.ts @@ -0,0 +1,84 @@ +import { MinerMetrics } from '@app/types/app-status'; +import { + menu, + CPU_HASH_ITEM_ID, + GPU_HASH_ITEM_ID, + EARNINGS_ITEM_ID, + UNMINIMIZE_ITEM_ID, + MINIMIZE_ITEM_ID, +} from '@app/utils'; +import { listen } from '@tauri-apps/api/event'; +import { getCurrentWindow } from '@tauri-apps/api/window'; +import { useCallback, useEffect, useMemo, useState } from 'react'; + +import { formatHashrate, formatNumber, FormatPreset } from '@app/utils'; +import { MenuItem } from '@tauri-apps/api/menu/menuItem'; + +const currentWindow = getCurrentWindow(); + +export function useUpdateSystemTray() { + const [metrics, setMetrics] = useState(); + + const totalEarningsFormatted = useMemo(() => { + const cpu_est = metrics?.cpu?.mining?.estimated_earnings || 0; + const gpu_est = metrics?.gpu?.mining?.estimated_earnings || 0; + const total = cpu_est + gpu_est; + return total > 0 ? formatNumber(total, FormatPreset.TXTM_COMPACT) : '0'; + }, [metrics]); + + const updateMenuItemEnabled = useCallback(async (itemId: string, enabled: boolean) => { + const item = await menu.get(itemId); + + if (item) { + const menuItem = item as MenuItem; + const currentEnabled = await menuItem?.isEnabled(); + if (currentEnabled !== enabled) { + await menuItem.setEnabled(enabled); + } + } + }, []); + const updateMenuItem = useCallback(async ({ itemId, itemText }: { itemId: string; itemText?: string }) => { + const item = await menu.get(itemId); + if (item && itemText) { + await item.setText(itemText); + } + }, []); + + const items = useMemo(() => { + const { cpu, gpu } = metrics || {}; + const cpu_h = cpu?.mining?.hash_rate || 0; + const gpu_h = gpu?.mining?.hash_rate || 0; + + const cpuHashItemText = `CPU Hashrate: ${cpu_h ? `${formatHashrate(cpu_h)}` : '-'}`; + const gpuHashItemText = `GPU Hashrate: ${gpu_h ? `${formatHashrate(gpu_h)}` : '-'}`; + const estEarningsItemText = `Est earning: ${totalEarningsFormatted !== '0' ? totalEarningsFormatted : '-'} tXTM/day`; + + return [ + { itemId: CPU_HASH_ITEM_ID, itemText: cpuHashItemText }, + { itemId: GPU_HASH_ITEM_ID, itemText: gpuHashItemText }, + { itemId: EARNINGS_ITEM_ID, itemText: estEarningsItemText }, + ]; + }, [metrics, totalEarningsFormatted]); + + useEffect(() => { + items.forEach(async (item) => { + await updateMenuItem({ ...item }); + }); + }, [items, updateMenuItem]); + + useEffect(() => { + const ul = listen('miner_metrics', async ({ payload }) => { + const minimized = await currentWindow.isMinimized(); + + if (payload) { + setMetrics(payload as MinerMetrics); + } + + await updateMenuItemEnabled(UNMINIMIZE_ITEM_ID, minimized); + await updateMenuItemEnabled(MINIMIZE_ITEM_ID, !minimized); + }); + return () => { + ul.then((unlisten) => unlisten()); + }; + }, [updateMenuItemEnabled]); +} diff --git a/src/hooks/app/useUpdateStatus.ts b/src/hooks/app/useUpdateStatus.ts new file mode 100644 index 000000000..af53e6811 --- /dev/null +++ b/src/hooks/app/useUpdateStatus.ts @@ -0,0 +1,90 @@ +import { useCallback, useState } from 'react'; +import { check, Update } from '@tauri-apps/plugin-updater'; +import { relaunch } from '@tauri-apps/plugin-process'; + +import { useAppStateStore } from '@app/store/appStateStore'; +import { useAppConfigStore } from '@app/store/useAppConfigStore'; +import { useUIStore } from '@app/store/useUIStore'; + +export const useHandleUpdate = () => { + const setIsAfterAutoUpdate = useAppStateStore((s) => s.setIsAfterAutoUpdate); + const setError = useAppStateStore((s) => s.setError); + const auto_update = useAppConfigStore((s) => s.auto_update); + const [updateData, setUpdateData] = useState(); + const [isLoading, setIsLoading] = useState(false); + const [contentLength, setContentLength] = useState(0); + const [downloaded, setDownloaded] = useState(0); + const setDialogToShow = useUIStore((s) => s.setDialogToShow); + + const handleClose = useCallback(() => { + setDialogToShow(null); + setIsAfterAutoUpdate(true); + }, [setIsAfterAutoUpdate, setDialogToShow]); + + const handleUpdate = useCallback(async () => { + if (!updateData) return; + setIsLoading(true); + console.info('Installing latest version of Tari Universe'); + + updateData + .downloadAndInstall(async (event) => { + switch (event.event) { + case 'Started': + setContentLength(event.data.contentLength || 0); + break; + case 'Progress': + setDownloaded((c) => c + event.data.chunkLength); + break; + case 'Finished': + console.info('download finished'); + break; + } + }) + .then(async () => { + handleClose(); + await relaunch(); + }) + .catch((e) => { + console.error(e); + setError(e); + }); + }, [handleClose, setError, updateData]); + + const fetchUpdate = useCallback(async () => { + const update = await check(); + if (update) { + setUpdateData(update); + + if (auto_update) { + await handleUpdate(); + } + } + }, [auto_update, handleUpdate]); + + return { + fetchUpdate, + handleUpdate, + updateData, + isLoading, + contentLength, + handleClose, + downloaded, + }; +}; + +export const useCheckUpdate = () => { + const setIsAfterAutoUpdate = useAppStateStore((s) => s.setIsAfterAutoUpdate); + const setDialogToShow = useUIStore((s) => s.setDialogToShow); + + return useCallback(() => { + check() + .then((updateRes) => { + if (updateRes && updateRes.available) { + setDialogToShow('autoUpdate'); + } else { + setIsAfterAutoUpdate(true); + } + }) + .catch(() => setIsAfterAutoUpdate(true)); + }, [setDialogToShow, setIsAfterAutoUpdate]); +}; diff --git a/src/hooks/helpers/index.ts b/src/hooks/helpers/index.ts new file mode 100644 index 000000000..55a787cb7 --- /dev/null +++ b/src/hooks/helpers/index.ts @@ -0,0 +1,4 @@ +export * from './useCopyToClipboard.ts'; +export * from './useDetectMode.ts'; +export * from './useInterval.ts'; +export * from './useKeyboardEvent.ts'; diff --git a/src/hooks/useInterval.ts b/src/hooks/helpers/useInterval.ts similarity index 100% rename from src/hooks/useInterval.ts rename to src/hooks/helpers/useInterval.ts diff --git a/src/hooks/index.ts b/src/hooks/index.ts new file mode 100644 index 000000000..d333da5b7 --- /dev/null +++ b/src/hooks/index.ts @@ -0,0 +1,3 @@ +export * from './app'; +export * from './helpers'; +export * from './mining'; diff --git a/src/hooks/mining/index.ts b/src/hooks/mining/index.ts new file mode 100644 index 000000000..9370dfdb7 --- /dev/null +++ b/src/hooks/mining/index.ts @@ -0,0 +1,6 @@ +export * from './useBlockInfo.ts'; +export * from './useEarningsRecap.ts'; +export * from './useMiningMetricsUpdater.ts'; +export * from './useMiningStatesSync.ts'; +export * from './useMiningUiStateMachine.ts'; +export * from './useTransactions.ts'; diff --git a/src/hooks/mining/useBlockInfo.ts b/src/hooks/mining/useBlockInfo.ts index 9bdfce571..3c97746b9 100644 --- a/src/hooks/mining/useBlockInfo.ts +++ b/src/hooks/mining/useBlockInfo.ts @@ -1,9 +1,11 @@ -import calculateTimeSince from '@app/utils/calculateTimeSince.ts'; -import { useMiningStore } from '@app/store/useMiningStore.ts'; import { useEffect, useMemo, useRef } from 'react'; -import { useInterval } from '@app/hooks/useInterval'; + +import { useMiningStore } from '@app/store/useMiningStore.ts'; import { useBlockchainVisualisationStore } from '@app/store/useBlockchainVisualisationStore'; +import calculateTimeSince from '@app/utils/calculateTimeSince.ts'; +import { useInterval } from '../helpers/useInterval'; + const INTERVAL = 1000; // 1 sec export function useBlockInfo() { diff --git a/src/hooks/mining/useEarningsRecap.ts b/src/hooks/mining/useEarningsRecap.ts index 9ad796216..96aae9d13 100644 --- a/src/hooks/mining/useEarningsRecap.ts +++ b/src/hooks/mining/useEarningsRecap.ts @@ -1,8 +1,9 @@ import { useBlockchainVisualisationStore } from '@app/store/useBlockchainVisualisationStore.ts'; import { useCallback, useEffect } from 'react'; import { listen } from '@tauri-apps/api/event'; -import { appWindow } from '@tauri-apps/api/window'; +import { getCurrentWebviewWindow } from '@tauri-apps/api/webviewWindow'; import { useWalletStore } from '@app/store/useWalletStore.ts'; +const appWindow = getCurrentWebviewWindow(); export default function useEarningsRecap() { const recapIds = useBlockchainVisualisationStore((s) => s.recapIds); @@ -22,14 +23,17 @@ export default function useEarningsRecap() { }, [handleWinRecap, recapIds, transactions]); useEffect(() => { - const listener = listen('tauri://focus', async (event) => { - const minimized = await appWindow?.isMinimized(); - const documentIsVisible = document?.visibilityState === 'visible' || false; - - if (documentIsVisible && !minimized && event.windowLabel == 'main') { - getMissedEarnings(); - } - }); + const listener = listen( + 'tauri://focus', + async () => { + const minimized = await appWindow?.isMinimized(); + const documentIsVisible = document?.visibilityState === 'visible' || false; + if (documentIsVisible && !minimized) { + getMissedEarnings(); + } + }, + { target: { kind: 'WebviewWindow', label: 'main' } } + ); return () => { listener.then((unlisten) => unlisten()); diff --git a/src/hooks/useMiningMetricsUpdater.ts b/src/hooks/mining/useMiningMetricsUpdater.ts similarity index 62% rename from src/hooks/useMiningMetricsUpdater.ts rename to src/hooks/mining/useMiningMetricsUpdater.ts index 824ebc16f..128f0193e 100644 --- a/src/hooks/useMiningMetricsUpdater.ts +++ b/src/hooks/mining/useMiningMetricsUpdater.ts @@ -1,10 +1,11 @@ -import { ALREADY_FETCHING } from '@app/App/sentryIgnore'; -import { useMiningStore } from '@app/store/useMiningStore'; -import { useCallback, useState } from 'react'; -import { invoke } from '@tauri-apps/api'; +import { useCallback } from 'react'; +import { MinerMetrics } from '@app/types/app-status'; + import { setAnimationState } from '@app/visuals.ts'; +import { useMiningStore } from '@app/store/useMiningStore'; import { useBlockchainVisualisationStore } from '@app/store/useBlockchainVisualisationStore.ts'; -import useFetchTx from '@app/hooks/mining/useTransactions.ts'; + +import useFetchTx from './useTransactions.ts'; export default function useMiningMetricsUpdater() { const fetchTx = useFetchTx(); @@ -14,14 +15,9 @@ export default function useMiningMetricsUpdater() { const handleNewBlock = useBlockchainVisualisationStore((s) => s.handleNewBlock); const displayBlockHeight = useBlockchainVisualisationStore((s) => s.displayBlockHeight); const setDisplayBlockHeight = useBlockchainVisualisationStore((s) => s.setDisplayBlockHeight); - const [isFetchingMetrics, setIsFetchingMetrics] = useState(false); - - return useCallback(async () => { - if (isFetchingMetrics) return; - try { - setIsFetchingMetrics(true); - const metrics = await invoke('get_miner_metrics'); + return useCallback( + async (metrics: MinerMetrics) => { if (metrics) { const isMining = metrics.cpu?.mining.is_mining || metrics.gpu?.mining.is_mining; // Pause animation when lost connection to the Tari Network @@ -33,30 +29,33 @@ export default function useMiningMetricsUpdater() { const blockHeight = metrics.base_node.block_height; if (blockHeight > 0 && currentBlockHeight > 0 && blockHeight > currentBlockHeight) { - await fetchTx(); - await handleNewBlock(blockHeight, isMining); + try { + fetchTx() + .then(async () => { + await handleNewBlock(blockHeight, isMining); + }) + .catch(() => { + setDisplayBlockHeight(blockHeight); + }); + } catch (_) { + setDisplayBlockHeight(blockHeight); + } } else { if (blockHeight && !displayBlockHeight) { setDisplayBlockHeight(blockHeight); } } setMiningMetrics(metrics); - setIsFetchingMetrics(false); - } - } catch (e) { - setIsFetchingMetrics(false); - if (e !== ALREADY_FETCHING.METRICS) { - console.error('Fetch mining metrics error:', e); } - } - }, [ - baseNodeConnected, - currentBlockHeight, - displayBlockHeight, - fetchTx, - handleNewBlock, - isFetchingMetrics, - setDisplayBlockHeight, - setMiningMetrics, - ]); + }, + [ + baseNodeConnected, + currentBlockHeight, + displayBlockHeight, + fetchTx, + handleNewBlock, + setDisplayBlockHeight, + setMiningMetrics, + ] + ); } diff --git a/src/hooks/mining/useMiningStatesSync.ts b/src/hooks/mining/useMiningStatesSync.ts index c1f091b9c..1250fcce3 100644 --- a/src/hooks/mining/useMiningStatesSync.ts +++ b/src/hooks/mining/useMiningStatesSync.ts @@ -1,14 +1,17 @@ -import useMiningMetricsUpdater from '@app/hooks/useMiningMetricsUpdater.ts'; -import { useBlockInfo } from '@app/hooks/mining/useBlockInfo.ts'; -import { useUiMiningStateMachine } from '@app/hooks/mining/useMiningUiStateMachine.ts'; +import { MinerMetrics } from '@app/types/app-status'; +import { listen } from '@tauri-apps/api/event'; +import { useCallback, useEffect } from 'react'; import { useWalletStore } from '@app/store/useWalletStore.ts'; -import { useCallback, useEffect } from 'react'; -import useEarningsRecap from '@app/hooks/mining/useEarningsRecap.ts'; import { useAppStateStore } from '@app/store/appStateStore'; -export default function useMiningStatesSync() { - const fetchMiningMetrics = useMiningMetricsUpdater(); +import { useBlockInfo } from './useBlockInfo.ts'; +import { useUiMiningStateMachine } from './useMiningUiStateMachine.ts'; +import useMiningMetricsUpdater from './useMiningMetricsUpdater.ts'; +import useEarningsRecap from './useEarningsRecap.ts'; + +export function useMiningStatesSync() { + const handleMiningMetrics = useMiningMetricsUpdater(); const fetchWalletDetails = useWalletStore((s) => s.fetchWalletDetails); const setupProgress = useAppStateStore((s) => s.setupProgress); const isSettingUp = useAppStateStore((s) => s.isSettingUp); @@ -21,10 +24,7 @@ export default function useMiningStatesSync() { if (setupProgress >= 0.75) { await fetchWalletDetails(); } - if (!isSettingUp) { - await fetchMiningMetrics(); - } - }, [fetchMiningMetrics, fetchWalletDetails, isSettingUp, setupProgress]); + }, [fetchWalletDetails, setupProgress]); // intervalItems useEffect(() => { @@ -36,4 +36,16 @@ export default function useMiningStatesSync() { clearInterval(fetchInterval); }; }, [callIntervalItems]); + + useEffect(() => { + if (isSettingUp) return; + const ul = listen('miner_metrics', async ({ payload }) => { + if (payload) { + await handleMiningMetrics(payload as MinerMetrics); + } + }); + return () => { + ul.then((unlisten) => unlisten()); + }; + }, [handleMiningMetrics, isSettingUp]); } diff --git a/src/hooks/mining/useTransactions.ts b/src/hooks/mining/useTransactions.ts index 7bafd9e30..cddf30a08 100644 --- a/src/hooks/mining/useTransactions.ts +++ b/src/hooks/mining/useTransactions.ts @@ -1,6 +1,6 @@ import { ALREADY_FETCHING } from '@app/App/sentryIgnore'; import { useCallback } from 'react'; -import { invoke } from '@tauri-apps/api'; +import { invoke } from '@tauri-apps/api/core'; import { useAppStateStore } from '@app/store/appStateStore.ts'; import { useWalletStore } from '@app/store/useWalletStore.ts'; import { Transaction } from '@app/types/wallet.ts'; @@ -11,7 +11,6 @@ export default function useFetchTx() { const setTransactionsLoading = useWalletStore((s) => s.setTransactionsLoading); const setupProgress = useAppStateStore((s) => s.setupProgress); const setTransactions = useWalletStore((s) => s.setTransactions); - const setError = useAppStateStore((s) => s.setError); const setItems = useCallback( async (newTx: Transaction[]) => { @@ -48,10 +47,12 @@ export default function useFetchTx() { setTransactionsLoading(false); } catch (error) { setTransactionsLoading(false); - setError('Could not get transaction history'); + if (error !== ALREADY_FETCHING.HISTORY) { console.error('Could not get transaction history: ', error); } + } finally { + setTransactionsLoading(false); } - }, [isTransactionLoading, setError, setItems, setTransactionsLoading, setupProgress]); + }, [isTransactionLoading, setItems, setTransactionsLoading, setupProgress]); } diff --git a/src/hooks/useUpdateStatus.ts b/src/hooks/useUpdateStatus.ts deleted file mode 100644 index 34a7c93c1..000000000 --- a/src/hooks/useUpdateStatus.ts +++ /dev/null @@ -1,138 +0,0 @@ -import { useInterval } from '@app/hooks/useInterval'; -import { useAppStateStore } from '@app/store/appStateStore'; -import { useAppConfigStore } from '@app/store/useAppConfigStore'; -import { checkUpdate, installUpdate, onUpdaterEvent } from '@tauri-apps/api/updater'; -import { useUIStore } from '@app/store/useUIStore'; -import { listen } from '@tauri-apps/api/event'; -import { invoke } from '@tauri-apps/api/tauri'; - -import { useCallback, useEffect, useRef, useState } from 'react'; - -export type UpdateStatus = 'NONE' | 'DOWNLOADING' | 'DONE'; - -interface UpdateStatusEvent { - status: UpdateStatus; - error: null | string; -} - -interface UpdateDownloadProgressEvent { - contentLength: number; - chunkLength: number; - downloaded: number; -} - -export const useUpdateStatus = () => { - const [status, setStatus] = useState('NONE'); - const [contentLength, setContentLength] = useState(0); - const [downloaded, setDownloaded] = useState(0); - - useEffect(() => { - const ul = listen('tauri://update-status', (status) => { - const statusString = status.payload.status; - setStatus(statusString); - }); - - return () => { - ul.then((unlisten) => unlisten()); - }; - }, []); - - useEffect(() => { - const ul = listen('update-progress', (progressEvent) => { - const contentLength = progressEvent.payload.contentLength; - setContentLength(contentLength); - if (contentLength === 0) { - setStatus('NONE'); - } - if (contentLength > 0) { - setStatus('DOWNLOADING'); - const downloaded = progressEvent.payload.downloaded; - setDownloaded(downloaded); - } - }); - return () => { - ul.then((unlisten) => unlisten()); - }; - }, []); - - return { status, contentLength, downloaded }; -}; - -const UPDATE_CHECK_INTERVAL = 1000 * 60 * 60; // 1 hour - -export const useHandleUpdate = () => { - const [isLoading, setIsLoading] = useState(false); - const setIsAfterAutoUpdate = useAppStateStore((s) => s.setIsAfterAutoUpdate); - const setDialogToShow = useUIStore((s) => s.setDialogToShow); - - const handleClose = useCallback(() => { - setDialogToShow(null); - setIsAfterAutoUpdate(true); - }, [setIsAfterAutoUpdate, setDialogToShow]); - - const handleUpdate = useCallback(async () => { - setIsLoading(true); - await installUpdate(); - console.info('Installing latest version of Tari Universe'); - try { - console.info('Restarting application after update'); - await invoke('restart_application', { shouldStopMiners: false }); - } catch (e) { - console.error('Relaunch error', e); - } - handleClose(); - }, [handleClose]); - - return { handleUpdate, isLoading, handleClose }; -}; - -export function useUpdateListener() { - const initialCheck = useRef(false); - const setLatestVersion = useUIStore((s) => s.setLatestVersion); - const auto_update = useAppConfigStore((s) => s.auto_update); - const setIsAfterAutoUpdate = useAppStateStore((s) => s.setIsAfterAutoUpdate); - const setDialogToShow = useUIStore((s) => s.setDialogToShow); - - const { handleUpdate, isLoading } = useHandleUpdate(); - const checkUpdateTariUniverse = useCallback(async () => { - if (isLoading) return; - try { - const { shouldUpdate, manifest } = await checkUpdate(); - if (shouldUpdate) { - console.info('New Tari Universe version available', manifest); - if (manifest?.version) { - setLatestVersion(manifest?.version); - } - if (auto_update) { - console.info('Proceed with auto-update'); - await handleUpdate(); - } - setDialogToShow('autoUpdate'); - } else { - setIsAfterAutoUpdate(true); - } - } catch (error) { - console.error('AutoUpdate error:', error); - setIsAfterAutoUpdate(true); - } - }, [auto_update, handleUpdate, isLoading, setDialogToShow, setIsAfterAutoUpdate, setLatestVersion]); - - useInterval(() => checkUpdateTariUniverse(), UPDATE_CHECK_INTERVAL); - - useEffect(() => { - const unlistenPromise = onUpdaterEvent(({ error, status }) => { - // This will log all updater events, including status updates and errors. - console.info('Updater event', error, status); - }); - return () => { - unlistenPromise?.then((unlisten) => unlisten()); - }; - }, [checkUpdateTariUniverse]); - - useEffect(() => { - if (initialCheck.current) return; - initialCheck.current = true; - - checkUpdateTariUniverse(); - }, [checkUpdateTariUniverse]); -} diff --git a/src/hooks/useVersions.ts b/src/hooks/useVersions.ts deleted file mode 100644 index e69de29bb..000000000 diff --git a/src/store/appStateStore.ts b/src/store/appStateStore.ts index 9854bafef..fc1111334 100644 --- a/src/store/appStateStore.ts +++ b/src/store/appStateStore.ts @@ -1,7 +1,7 @@ import { ApplicationsVersions, CriticalProblem, ExternalDependency } from '@app/types/app-status'; import { setAnimationState } from '@app/visuals'; import { create } from './create'; -import { invoke } from '@tauri-apps/api'; +import { invoke } from '@tauri-apps/api/core'; import { useAppConfigStore } from './useAppConfigStore'; import { useMiningStore } from './useMiningStore'; import { addToast } from '@app/components/ToastStack/useToastStore'; diff --git a/src/store/useAirdropStore.ts b/src/store/useAirdropStore.ts index 011936dc1..8cea72f38 100644 --- a/src/store/useAirdropStore.ts +++ b/src/store/useAirdropStore.ts @@ -1,6 +1,6 @@ import { createWithEqualityFn as create } from 'zustand/traditional'; import { persist } from 'zustand/middleware'; -import { invoke } from '@tauri-apps/api/tauri'; +import { invoke } from '@tauri-apps/api/core'; import { useMiningStore } from './useMiningStore'; export const GIFT_GEMS = 5000; diff --git a/src/store/useAppConfigStore.ts b/src/store/useAppConfigStore.ts index 82b0d8c00..ece45bcec 100644 --- a/src/store/useAppConfigStore.ts +++ b/src/store/useAppConfigStore.ts @@ -1,4 +1,4 @@ -import { invoke } from '@tauri-apps/api'; +import { invoke } from '@tauri-apps/api/core'; import { create } from './create'; import { AppConfig, GpuThreads } from '../types/app-status.ts'; import { useAppStateStore } from './appStateStore.ts'; diff --git a/src/store/useBlockchainVisualisationStore.ts b/src/store/useBlockchainVisualisationStore.ts index 02c9816d2..c682c4cab 100644 --- a/src/store/useBlockchainVisualisationStore.ts +++ b/src/store/useBlockchainVisualisationStore.ts @@ -2,11 +2,12 @@ import { Transaction } from '@app/types/wallet'; import { create } from './create'; import { useMiningStore } from './useMiningStore.ts'; -import { appWindow } from '@tauri-apps/api/window'; +import { getCurrentWebviewWindow } from '@tauri-apps/api/webviewWindow'; import { BlockTimeData } from '@app/types/mining.ts'; import { setAnimationState } from '@app/visuals.ts'; import { TransactionInfo } from '@app/types/app-status.ts'; -import { useWalletStore } from '@app/store/useWalletStore.ts'; +import { useWalletStore } from './useWalletStore.ts'; +const appWindow = getCurrentWebviewWindow(); interface Recap { count: number; diff --git a/src/store/useMiningStore.ts b/src/store/useMiningStore.ts index de80cf0b8..19cb329c3 100644 --- a/src/store/useMiningStore.ts +++ b/src/store/useMiningStore.ts @@ -1,7 +1,7 @@ import { GpuThreads, MaxConsumptionLevels, MinerMetrics } from '@app/types/app-status'; import { create } from './create'; import * as Sentry from '@sentry/react'; -import { invoke } from '@tauri-apps/api'; +import { invoke } from '@tauri-apps/api/core'; import { useAppStateStore } from './appStateStore'; import { useAppConfigStore } from './useAppConfigStore'; import { modeType } from './types'; diff --git a/src/store/useP2poolStatsStore.ts b/src/store/useP2poolStatsStore.ts index 615c1eb85..e7cd7c3f1 100644 --- a/src/store/useP2poolStatsStore.ts +++ b/src/store/useP2poolStatsStore.ts @@ -1,4 +1,4 @@ -import { invoke } from '@tauri-apps/api'; +import { invoke } from '@tauri-apps/api/core'; import { create } from './create'; import { P2poolConnections, P2poolStats, P2poolStatsResult } from '../types/app-status.ts'; diff --git a/src/store/useWalletStore.ts b/src/store/useWalletStore.ts index accf43e1b..c9e83eda8 100644 --- a/src/store/useWalletStore.ts +++ b/src/store/useWalletStore.ts @@ -1,7 +1,7 @@ import { ALREADY_FETCHING } from '@app/App/sentryIgnore'; import { create } from './create'; import { WalletBalance } from '../types/app-status.ts'; -import { invoke } from '@tauri-apps/api'; +import { invoke } from '@tauri-apps/api/core'; import { Transaction } from '@app/types/wallet.ts'; interface State extends WalletBalance { diff --git a/src/types/invoke.ts b/src/types/invoke.ts index ea0fa3b63..d191f663b 100644 --- a/src/types/invoke.ts +++ b/src/types/invoke.ts @@ -15,7 +15,7 @@ import { Language } from '@app/i18initializer'; import { PaperWalletDetails } from '@app/types/app-status.ts'; import { displayMode, modeType } from '@app/store/types.ts'; -declare module '@tauri-apps/api/tauri' { +declare module '@tauri-apps/api/core' { function invoke( param: 'set_should_always_use_system_language', payload: { shouldAlwaysUseSystemLanguage: boolean } diff --git a/src/utils/index.ts b/src/utils/index.ts new file mode 100644 index 000000000..db5c61581 --- /dev/null +++ b/src/utils/index.ts @@ -0,0 +1,6 @@ +export * from './calculateTimeSince.ts'; +export * from './convertHex.ts'; +export * from './formatters.ts'; +export * from './shared-logger.ts'; +export * from './systray.ts'; +export * from './truncateString.ts'; diff --git a/src/utils/shared-logger.ts b/src/utils/shared-logger.ts index 15ba209b3..6365293e7 100644 --- a/src/utils/shared-logger.ts +++ b/src/utils/shared-logger.ts @@ -1,5 +1,5 @@ /* eslint-disable no-console */ -import { invoke } from '@tauri-apps/api'; +import { invoke } from '@tauri-apps/api/core'; // Override console functions @@ -32,9 +32,11 @@ const getOptions = (args, level) => { return originalConsole[level](...args); }; -export const setupLogger = () => { +const setupLogger = () => { // Override console.log = (...args) => getOptions(args, 'log'); console.info = (...args) => getOptions(args, 'info'); console.error = (...args) => getOptions(args, 'error'); }; + +export default setupLogger; diff --git a/src/utils/systray.ts b/src/utils/systray.ts new file mode 100644 index 000000000..7a2e0a317 --- /dev/null +++ b/src/utils/systray.ts @@ -0,0 +1,96 @@ +import { Menu } from '@tauri-apps/api/menu'; +import { TrayIcon } from '@tauri-apps/api/tray'; +import { MenuItemOptions } from '@tauri-apps/api/menu/menuItem'; +import { PredefinedMenuItemOptions } from '@tauri-apps/api/menu/predefinedMenuItem'; +import { getCurrentWindow } from '@tauri-apps/api/window'; + +const TRAY_ID = 'universe-tray-id'; +const TRAY_MENU_ID = 'universe-tray-menu-id'; + +export const CPU_HASH_ITEM_ID = 'cpu_hashrate'; +export const GPU_HASH_ITEM_ID = 'gpu_hashrate'; +export const EARNINGS_ITEM_ID = 'estimated_earning'; +export const UNMINIMIZE_ITEM_ID = 'unminimize'; +export const MINIMIZE_ITEM_ID = 'minimize'; + +const about = { + item: { About: null }, +} as PredefinedMenuItemOptions; +const separator = { + item: 'Separator', +} as PredefinedMenuItemOptions; + +const currentWindow = getCurrentWindow(); + +async function handleMinimize(itemId: string): Promise { + if (itemId === UNMINIMIZE_ITEM_ID) { + await currentWindow.unminimize(); + } + + if (itemId === MINIMIZE_ITEM_ID) { + await currentWindow.minimize(); + } +} + +// TODO use translations +const dynamicItems = [ + { + id: CPU_HASH_ITEM_ID, + text: `CPU Hashrate: -`, + enabled: false, + }, + { + id: GPU_HASH_ITEM_ID, + text: `GPU Hashrate: -`, + enabled: false, + }, + separator, + { + id: EARNINGS_ITEM_ID, + text: `Est earning: -`, + enabled: false, + }, + separator, + { + id: UNMINIMIZE_ITEM_ID, + text: 'Uninimize', + enabled: false, + action: handleMinimize, + }, + { + id: MINIMIZE_ITEM_ID, + text: 'Minimize', + enabled: true, + action: handleMinimize, + }, +] as MenuItemOptions[]; + +let tray: TrayIcon | null; +let menu: Menu; + +export async function initSystray() { + try { + menu = await Menu.new({ + id: TRAY_MENU_ID, + items: [about, separator, ...dynamicItems], + }); + } catch (e) { + console.error('Menu error: ', e); + } + + try { + tray = await TrayIcon.getById(TRAY_ID); + } catch (e) { + console.error('TrayIcon error: ', e); + } + + try { + if (tray && menu) { + await tray?.setMenu(menu); + } + } catch (e) { + console.error('Set TrayIcon Menu error: ', e); + } +} + +export { tray, menu };