diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 2fb9f85..1ea4da3 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -3,14 +3,14 @@ on: push: branches: # - 'main' - - '*' + - 'nextrelease' # - 'v*' jobs: create-release: permissions: contents: write - runs-on: ubuntu-20.04 + runs-on: ubuntu-latest outputs: release_id: ${{ steps.create-release.outputs.result }} @@ -62,10 +62,10 @@ jobs: - host: windows-latest target: x86_64-pc-windows-msvc arch: amd64 - # - host: windows-latest - # target: aarch64-pc-windows-msvc - # arch: arm64 - - host: ubuntu-latest + - host: windows-latest + target: aarch64-pc-windows-msvc + arch: arm64 + - host: ubuntu-22.04 target: x86_64-unknown-linux-gnu os: linux arch: amd64 @@ -113,7 +113,7 @@ jobs: if: contains(matrix.settings.host, 'ubuntu') run: | sudo apt-get update - sudo apt-get install -y libgtk-3-dev libwebkit2gtk-4.0-dev libappindicator3-dev librsvg2-dev patchelf + sudo apt-get install -y libwebkit2gtk-4.1-dev libappindicator3-dev librsvg2-dev patchelf libsoup2.4-dev javascriptcoregtk-4.0 webkit2gtk-4.0 - name: install frontend dependencies run: yarn install # change this to npm or pnpm depending on which one you use - uses: tauri-apps/tauri-action@dev @@ -196,7 +196,7 @@ jobs: publish-release: permissions: contents: write - runs-on: ubuntu-20.04 + runs-on: ubuntu-latest needs: [create-release, build-tauri] steps: diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml new file mode 100644 index 0000000..13046da --- /dev/null +++ b/.github/workflows/test.yml @@ -0,0 +1,222 @@ +name: Release +on: + push: + branches: + # - 'main' + # - '*' + - 'nextrelease' + # - 'v*' + +jobs: + # create-release: + # permissions: + # contents: write + # runs-on: ubuntu-latest + # outputs: + # release_id: ${{ steps.create-release.outputs.result }} + + # steps: + # - uses: actions/checkout@v4 + # - name: setup node + # uses: actions/setup-node@v4 + # with: + # node-version: 20 + # - name: get version + # run: echo "PACKAGE_VERSION=$(node -p "require('./package.json').version")" >> $GITHUB_ENV + # - name: create release + # id: create-release + # uses: actions/github-script@v7 + # with: + # script: | + # const currentDate = new Date(); + # let isoDate = currentDate.toISOString(); // "2023-08-27T12:34:56.789Z" + # let tagDate = isoDate.substring(0, 10); // "2023-08-27" + # let tagTime = isoDate.substring(11, 19).replace(/:/g, ''); // "123456" + # let githubTag = `${tagDate}-${tagTime}`; + # const { data } = await github.rest.repos.createRelease({ + # owner: context.repo.owner, + # repo: context.repo.repo, + # tag_name: githubTag, + # name: `Filedime v${process.env.PACKAGE_VERSION}`, + # body: 'Checkout commit for detailed changelog on what has changed.', + # draft: false, + # prerelease: false + # }) + # return data.id + + build-tauri: + # needs: create-release + permissions: + contents: write + strategy: + fail-fast: false + matrix: + settings: + - host: macos-latest + target: x86_64-apple-darwin + os: darwin + arch: amd64 + - host: macos-latest + target: aarch64-apple-darwin + os: darwin + arch: arm64 + - host: windows-latest + target: x86_64-pc-windows-msvc + arch: amd64 + - host: windows-latest + target: aarch64-pc-windows-msvc + arch: arm64 + - host: ubuntu-22.04 + target: x86_64-unknown-linux-gnu + os: linux + arch: amd64 + # - host: ubuntu-22.04 + # target: aarch64-unknown-linux-gnu + # os: linux + # arch: arm64 + # - host: ubuntu-latest + # target: x86_64-unknown-linux-musl + # os: linux + # arch: x86_64 + # - host: ubuntu-latest + # target: aarch64-unknown-linux-musl + # os: linux + # arch: arm64 + + # - host: ubuntu-latest + # target: aarch64-unknown-linux-gnu + # os: linux + # arch: arm64 + + name: ${{ matrix.settings.target }} + runs-on: ${{ matrix.settings.host }} + + steps: + - uses: actions/checkout@v4 + - name: Rust setup + uses: dtolnay/rust-toolchain@stable + with: + targets: ${{ matrix.settings.target }} + + # - name: Rust cache + # uses: swatinem/rust-cache@v2 + # with: + # workspaces: "./desktop/src-tauri -> target" + - name: setup node + uses: actions/setup-node@v4 + with: + node-version: 20 + # - name: Uninstall Homebrew + # run: | + # NONINTERACTIVE=1 /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/uninstall.sh)" + + - name: install dependencies (ubuntu only) + if: contains(matrix.settings.host, 'ubuntu') + run: | + sudo apt-get update + sudo apt-get install -y libwebkit2gtk-4.1-dev libappindicator3-dev librsvg2-dev patchelf libsoup2.4-dev javascriptcoregtk-4.0 webkit2gtk-4.0 + + # - name: Setup Bun + # uses: oven-sh/setup-bun@v1 + - name: install frontend dependencies + run: yarn install # change this to npm or pnpm depending on which one you use + - uses: tauri-apps/tauri-action@v0 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + with: + args: "--target ${{ matrix.settings.target }}" + # tagName: ${{ env.TAG }} + # the action automatically replaces \_\_VERSION\_\_ with the app version + releaseName: 'App v__VERSION__' + # releaseBody: 'See the assets to download this version and install.' + releaseDraft: true + # prerelease: false + # releaseId: ${{ needs.create-release.outputs.release_id }} + # release-arm: + # needs: create-release + # runs-on: ubuntu-latest + # permissions: + # contents: write + # steps: + # - uses: actions/checkout@v3 + # - uses: pguyot/arm-runner-action@v2.5.2 + # with: + # base_image: raspios_lite:latest + # cpu: cortex-a7 + # bind_mount_repository: true + # image_additional_mb: 10240 + # optimize_image: false + # commands: | + # # Rust complains (rightly) that $HOME doesn't match eid home + # export HOME=/root + # # Workaround to CI worker being stuck on Updating crates.io index + # export CARGO_REGISTRIES_CRATES_IO_PROTOCOL=sparse + # # Install setup prerequisites + # apt update -y --allow-releaseinfo-change + # apt upgrade -y + # apt autoremove -y + # apt install -y curl file + # curl https://sh.rustup.rs -sSf | sh -s -- -y + # . "$HOME/.cargo/env" + # curl -fsSL https://deb.nodesource.com/setup_lts.x | sudo -E bash + # # Install framework specific packages + # apt-get install -y nodejs + # npm install --global yarn + # yarn add next@latest react@latest react-dom@latest eslint-config-next@latest + # # Install build tools and tauri-cli requirements + # apt install -y libwebkit2gtk-4.0-dev build-essential wget libssl-dev libgtk-3-dev libayatana-appindicator3-dev librsvg2-dev + + # cargo install tauri-cli + # # Install frontend dependencies + # yarn + # # Build the application + # cargo tauri build --verbose + # - uses: AButler/upload-release-assets@v3.0 + # with: + # files: "${{ github.workspace }}/src-tauri/target/release/bundle/deb/*.deb;${{ github.workspace }}/src-tauri/target/release/bundle/appimage/*.AppImage" + # repo-token: ${{ secrets.GITHUB_TOKEN }} + # release-id: ${{ needs.create-release.outputs.release_id }} + # # - name: Upload Release Asset + # # id: upload-release-asset + # # uses: actions/upload-release-asset@v1 + # # env: + # # GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + # # with: + # # upload_url: ${{ needs.steps.create-release.outputs.upload_url }} + # # asset_path: ${{ github.workspace }}/src-tauri/target/release/bundle/deb/*.deb + # # asset_name: your-artifact-name + # # asset_content_type: application/octet-stream + # - name: Upload deb bundle + # uses: actions/upload-artifact@v3 + # with: + # name: Debian Bundle + # path: ${{ github.workspace }}/src-tauri/target/release/bundle/deb/*.deb + # - name: Upload appimage bundle + # uses: actions/upload-artifact@v3 + # with: + # name: Appimage Bundle + # path: ${{ github.workspace }}/src-tauri/target/release/bundle/appimage/*.AppImage + + # publish-release: + # permissions: + # contents: write + # runs-on: ubuntu-latest + # needs: [create-release, build-tauri] + + # steps: + # - name: publish release + # id: publish-release + # uses: actions/github-script@v7 + # env: + # release_id: ${{ needs.create-release.outputs.release_id }} + # with: + # script: | + # github.rest.repos.updateRelease({ + # owner: context.repo.owner, + # repo: context.repo.repo, + # release_id: process.env.release_id, + # draft: false, + # prerelease: false + # }) + + diff --git a/README.md b/README.md index 37281e3..ab3b01d 100644 --- a/README.md +++ b/README.md @@ -54,12 +54,16 @@ when building on nixos use the shell.nix file provided if necessary currently the code may contains lots of comments in rust it will be cleared up in the future. ## Server guide for the complete stack for reference -Ollama- http://localhost:11434/ -FiledimeGPT (Python)- http://localhost:8694/ -FiledimeGPT LAN url - http://:8477 +Ollama should be installed and running and ip address should be configured in settings, if ollama is running on a remote machine. +Filechat UI LAN url can be found in settings. ## Chat self reference -Chatting normally should query ollama endpoint from ts, if contextless or if FiledimeGPT server is not running, else if FiledimeGPT server is running, to specifically run query on ollama endpoint include "o2c" (abbrevation for outside of current context) at the begging of the chat.You can also start with generally to run on ollama endpoint via FiledimeGPT server. -From LAN FiledimeGPT you can use ollama only if ollama is set to accept requests from 0.0.0.0/ if FiledimeGPT Python server is running +The filechat is accessible via its own repo as well @ https://github.com/visnkmr/batu, however filequerying will not work there. +For LAN access from a remote machine you can use ollama only if ollama is set to accept requests from 0.0.0.0 -Thanks to all the maintainers of the libraries listed in the frontenddepslist.txt and depslist.txt files in the repo. \ No newline at end of file +Thanks to all the maintainers of the libraries listed in the frontenddepslist.txt and depslist.txt files in the repo. + + \ No newline at end of file diff --git a/next-env.d.ts b/next-env.d.ts index fd36f94..3cd7048 100644 --- a/next-env.d.ts +++ b/next-env.d.ts @@ -3,4 +3,4 @@ /// // NOTE: This file should not be edited -// see https://nextjs.org/docs/basic-features/typescript for more information. +// see https://nextjs.org/docs/app/api-reference/config/typescript for more information. diff --git a/next.config.js b/next.config.js index 820c4bf..99c2462 100644 --- a/next.config.js +++ b/next.config.js @@ -22,14 +22,17 @@ const nextConfig = // withPWA( // withBundleAnalyzer( { + reactStrictMode: false, + // withPWA, // withOptimizedImages, experimental: { + // reactCompiler:true, // appDir: true, // optimizeCss: true, esmExternals: true, - forceSwcTransforms: true, + // forceSwcTransforms: true, scrollRestoration: true, legacyBrowsers: false, }, @@ -72,6 +75,7 @@ const nextConfig = config.resolve.fallback = { fs: false, + ssr:false, net: false, tls: false }; @@ -94,8 +98,8 @@ const nextConfig = wrap_iife: true, }, compress: { - drop_console: true, - drop_debugger: true, + // drop_console: true, + // drop_debugger: true, hoist_funs: true, hoist_props: true, hoist_vars: true, diff --git a/package.json b/package.json index 1f0d2a6..85bd5fd 100644 --- a/package.json +++ b/package.json @@ -1,40 +1,85 @@ { "name": "filedime", - "version": "0.9.7", + "version": "0.9.9", "private": true, "engines": { "node": "20.x" }, "scripts": { "start": "next start", - "build": "next build", - "postbuild": "next-sitemap", - "dev": "next dev", + "build": "next build --turbopack", + "post----build": "next-sitemap", + "dev": "next dev --turbopack && node -p \"require('./package.json').version\" > version.txt", "lint": "next lint", "export": "next export" }, "author": "visnkmr", "license": "MIT", "devDependencies": { + "@hookform/resolvers": "^3.9.1", + "@radix-ui/react-accordion": "1.2.2", + "@radix-ui/react-alert-dialog": "1.1.4", + "@radix-ui/react-aspect-ratio": "1.1.1", + "@radix-ui/react-avatar": "1.1.2", + "@radix-ui/react-checkbox": "1.1.3", + "@radix-ui/react-collapsible": "1.1.2", + "@radix-ui/react-context-menu": "2.2.4", + "@radix-ui/react-dialog": "1.1.4", + "@radix-ui/react-dropdown-menu": "2.1.4", + "@radix-ui/react-hover-card": "1.1.4", + "@radix-ui/react-label": "2.1.1", + "@radix-ui/react-menubar": "1.1.4", + "@radix-ui/react-navigation-menu": "1.2.3", + "@radix-ui/react-progress": "latest", + "@radix-ui/react-radio-group": "latest", + "@radix-ui/react-scroll-area": "1.2.2", + "@radix-ui/react-select": "2.1.4", + "@radix-ui/react-separator": "1.1.1", + "@radix-ui/react-slider": "1.2.2", + "@radix-ui/react-slot": "1.1.1", + "@radix-ui/react-switch": "1.1.2", + "@radix-ui/react-tabs": "1.1.2", + "@radix-ui/react-toast": "latest", + "@radix-ui/react-toggle": "1.1.1", + "@radix-ui/react-toggle-group": "1.1.1", + "@radix-ui/react-tooltip": "1.1.6", + "class-variance-authority": "^0.7.1", + "cmdk": "1.0.4", + "date-fns": "latest", + "embla-carousel-react": "8.5.1", + "input-otp": "1.4.1", + "marked": "^15.0.12", + "react-day-picker": "8.10.1", + "react-fast-marquee": "^1.6.5", + "react-hook-form": "^7.54.1", + "react-resizable-panels": "^2.1.7", + "react-syntax-highlighter": "latest", + "recharts": "2.15.0", + "shiki": "^3.4.2", + "sonner": "^1.7.1", + "tailwindcss-animate": "^1.0.7", + "vaul": "^0.9.6", + "zod": "^3.24.1", "@radix-ui/react-popover": "1.0.7", - "@swc/core": "^1.7.26", + "@swc/core": "^1.11.29", "@tailwindcss/line-clamp": "^0.4.4", - "@tanstack/react-query": "^5.56.2", - "@tanstack/react-query-devtools": "^5.58.0", - "@tanstack/react-table": "^8.20.5", - "@tauri-apps/cli": "^1.6.2", - "@types/classnames": "^2.3.1", - "@types/lodash": "^4.17.9", + "@tanstack/react-query": "^5.77.2", + "@tanstack/react-query-devtools": "^5.77.2", + "@tanstack/react-table": "^8.21.3", + "@tauri-apps/cli": "^2.6.2", + "@types/classnames": "^2.3.4", + "@types/lodash": "^4.17.17", "@types/lodash.debounce": "^4.0.9", "@types/lodash.take": "^4.1.9", - "@types/luxon": "^3.4.2", - "@types/node": "^20.16.10", - "@types/react": "^18.3.10", + "@types/luxon": "^3.6.2", + "@types/node": "^20.17.50", + "@types/react": "^18.3.23", "@types/react-lazy-load-image-component": "^1.6.4", - "@types/react-virtualized": "^9.21.30", + "@types/react-virtualized": "^9.22.2", "@types/simple-peer": "^9.11.8", - "autoprefixer": "^10.4.20", - "axios": "^1.7.7", + "autoprefixer": "^10.4.21", + "@tauri-apps/plugin-os": "^2.0.0", + "axios": "^1.9.0", "classnames": "^2.5.1", "clean-css": "^5.3.3", "clsx": "^2.1.1", @@ -47,61 +92,63 @@ "lodash.debounce": "^4.0.8", "lodash.take": "^4.1.1", "lucide-react": "^0.295.0", - "luxon": "^3.5.0", - "next": "^14.2.13", + "luxon": "^3.6.1", + "next": "^15", "next-sitemap": "^4.2.3", "next-themes": "^0.2.1", - "radix-ui": "^1.0.1", + "radix-ui": "^1.4.2", "react": "^18.3.1", "react-countup": "^6.5.3", "react-dom": "^18.3.1", "react-query": "^3.39.3", "react-text-transition": "^3.1.0", - "react-virtualized": "^9.22.5", - "swr": "^2.2.5", - "tailwind": "^4.0.0", - "tailwind-merge": "^2.5.2", - "tailwindcss": "^3.4.13", - "terser-webpack-plugin": "^5.3.10", - "typescript": "^5.6.2", + "react-virtualized": "^9.22.6", + "swr": "^2.3.3", + "tailwind-merge": "^2.6.0", + "tailwindcss": "^3.4.17", + "terser-webpack-plugin": "^5.3.14", + "typescript": "^5.8.3", "remark-breaks": "^3.0.3", "remark-gfm": "^3.0.1", "remark-math": "^5.1.1", "rehype-highlight": "^6.0.0", "react-markdown": "^8.0.7", "use-debounce": "^9.0.4", - "mermaid": "^10.9.1" + "mermaid": "^10.9.3" }, "sideEffects": false, "dependencies": { "@microsoft/fetch-event-source": "^2.0.1", - "@next/bundle-analyzer": "^14.2.13", - "@radix-ui/react-alert-dialog": "^1.1.1", - "@radix-ui/react-context-menu": "^2.2.1", - "@radix-ui/react-label": "^2.1.0", - "@radix-ui/react-progress": "^1.1.0", - "@radix-ui/react-slot": "^1.1.0", - "@radix-ui/react-switch": "^1.1.0", - "@radix-ui/react-toast": "^1.2.1", - "@tauri-apps/api": "^1.6.0", - "class-variance-authority": "^0.7.0", + "@next/bundle-analyzer": "^14.2.29", + "@radix-ui/react-alert-dialog": "^1.1.14", + "@radix-ui/react-context-menu": "^2.2.15", + "@radix-ui/react-label": "^2.1.7", + "@radix-ui/react-progress": "^1.1.7", + "@radix-ui/react-slot": "^1.2.3", + "@radix-ui/react-switch": "^1.2.5", + "@radix-ui/react-toast": "^1.2.14", + "@tauri-apps/api": "2.6.0", + "babel-plugin-react-compiler": "^19.1.0-rc.2", + "class-variance-authority": "^0.7.1", + "date-fns": "^4.1.0", "fastest-levenshtein": "^1.0.16", - "fuse.js": "^7.0.0", - "html-react-parser": "^5.1.16", + "fuse.js": "^7.1.0", + "html-react-parser": "^5.2.5", + "js-big-decimal": "^2.2.0", "js-file-download": "^0.4.12", "next-optimized-images": "3.0.0-canary.10", "next-pwa": "^5.6.0", "react-fast-marquee": "^1.6.5", "react-hooks-global-state": "^2.1.0", - "react-hot-toast": "^2.4.1", - "react-lazy-load-image-component": "^1.6.2", + "react-hot-toast": "^2.5.2", + "react-lazy-load-image-component": "^1.6.3", "react-resizable-panels": "^1.0.10", "react-toastify": "^9.1.3", "react-wrap-balancer": "^1.1.1", - "react-zoom-pan-pinch": "^3.6.1", + "react-zoom-pan-pinch": "^3.7.0", + "sharp": "0.30.7", "simple-peer": "^9.11.1", - "toast-notification-js": "^1.1.0", - "sharp": "0.30.7" + "toast-notification-js": "^1.1.0" }, "resolutions": { "sharp": "0.30.7" diff --git a/src-tauri/Cargo.lock b/src-tauri/Cargo.lock index ee3867e..71daab0 100644 --- a/src-tauri/Cargo.lock +++ b/src-tauri/Cargo.lock @@ -11,12 +11,42 @@ dependencies = [ "gimli", ] +[[package]] +name = "adler" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe" + [[package]] name = "adler2" version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "512761e0bb2578dd7380c6baaa0f4ce03e84f95e960231d1dec8bf4d7d6e2627" +[[package]] +name = "ahash" +version = "0.7.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "891477e0c6a8957309ee5c45a6368af3ae14bb510732d2684ffa19af310920f9" +dependencies = [ + "getrandom 0.2.15", + "once_cell", + "version_check 0.9.5", +] + +[[package]] +name = "ahash" +version = "0.8.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5a15f179cd60c4584b8a8c596927aadc462e27f2ca70c04e0071964a73ba7a75" +dependencies = [ + "cfg-if", + "getrandom 0.3.3", + "once_cell", + "version_check 0.9.5", + "zerocopy 0.8.26", +] + [[package]] name = "aho-corasick" version = "1.1.3" @@ -56,6 +86,17 @@ dependencies = [ "libc", ] +[[package]] +name = "angle" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0bf965b6b142c8c68150e815ef527d17f0fe74e622b2c5287fd8626cb7c4a5fa" +dependencies = [ + "num-traits", + "serde", + "serde_derive", +] + [[package]] name = "anstream" version = "0.6.18" @@ -107,32 +148,217 @@ dependencies = [ [[package]] name = "anyhow" -version = "1.0.95" +version = "1.0.98" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e16d2d3311acee920a9eb8d33b8cbc1787ce4a264e85f964c2404b969bdcd487" + +[[package]] +name = "approx" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cab112f0a86d568ea0e627cc1d6be74a1e9cd55214684db5561995f6dad897c6" +dependencies = [ + "num-traits", +] + +[[package]] +name = "arbitrary" +version = "1.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dde20b3d026af13f561bdd0f15edf01fc734f0dafcedbaf42bba506a9517f223" +dependencies = [ + "derive_arbitrary", +] + +[[package]] +name = "arboard" +version = "3.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "55f533f8e0af236ffe5eb979b99381df3258853f00ba2e44b6e1955292c75227" +dependencies = [ + "clipboard-win", + "image 0.25.6", + "log 0.4.27", + "objc2 0.6.1", + "objc2-app-kit", + "objc2-core-foundation", + "objc2-core-graphics", + "objc2-foundation 0.3.1", + "parking_lot", + "percent-encoding 2.3.1", + "windows-sys 0.59.0", + "wl-clipboard-rs", + "x11rb", +] + +[[package]] +name = "arrayref" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "76a2e8124351fda1ef8aaaa3bbd7ebbcb486bbcd4225aca0aa0d84bb2db8fecb" + +[[package]] +name = "arrayvec" +version = "0.7.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7c02d123df017efcdfbd739ef81735b36c5ba83ec3c59c80a9d7ecc718f92e50" + +[[package]] +name = "ascii" +version = "0.8.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "97be891acc47ca214468e09425d02cef3af2c94d0d82081cd02061f996802f14" + +[[package]] +name = "ashpd" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6cbdf310d77fd3aaee6ea2093db7011dc2d35d2eb3481e5607f1f8d942ed99df" +dependencies = [ + "enumflags2", + "futures-channel", + "futures-util", + "rand 0.9.1", + "raw-window-handle", + "serde", + "serde_repr", + "tokio", + "url 2.5.4", + "zbus", +] + +[[package]] +name = "async-broadcast" +version = "0.7.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "435a87a52755b8f27fcf321ac4f04b2802e337c8c4872923137471ec39c37532" +dependencies = [ + "event-listener", + "event-listener-strategy", + "futures-core", + "pin-project-lite", +] + +[[package]] +name = "async-recursion" +version = "1.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3b43422f69d8ff38f95f1b2bb76517c91589a924d1559a0e935d7c8ce0274c11" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.93", +] + +[[package]] +name = "async-stream" +version = "0.3.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b5a71a6f37880a80d1d7f19efd781e4b5de42c88f0722cc13bcb6cc2cfe8476" +dependencies = [ + "async-stream-impl", + "futures-core", + "pin-project-lite", +] + +[[package]] +name = "async-stream-impl" +version = "0.3.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c7c24de15d275a1ecfd47a380fb4d5ec9bfe0933f309ed5e705b775596a3574d" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.93", +] + +[[package]] +name = "async-trait" +version = "0.1.88" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "34ac096ce696dc2fcabef30516bb13c0a68a11d30131d3df6f04711467681b04" +checksum = "e539d3fca749fcee5236ab05e93a52867dd549cc157c8cb7f99595f3cedffdb5" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.93", +] [[package]] name = "atk" -version = "0.15.1" +version = "0.18.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2c3d816ce6f0e2909a96830d6911c2aff044370b1ef92d7f267b43bae5addedd" +checksum = "241b621213072e993be4f6f3a9e4b45f65b7e6faad43001be957184b7bb1824b" dependencies = [ "atk-sys", - "bitflags 1.3.2", "glib", "libc", ] [[package]] name = "atk-sys" -version = "0.15.1" +version = "0.18.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "58aeb089fb698e06db8089971c7ee317ab9644bade33383f63631437b03aafb6" +checksum = "c5e48b684b0ca77d2bbadeef17424c2ea3c897d44d566a1617e7e8f30614d086" dependencies = [ "glib-sys", "gobject-sys", "libc", - "system-deps 6.2.2", + "system-deps", +] + +[[package]] +name = "atomic-waker" +version = "1.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1505bd5d3d116872e7271a6d4e16d81d0c8570876c8de68093a09ac269d8aac0" + +[[package]] +name = "attribute-derive" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c124f12ade4e670107b132722d0ad1a5c9790bcbc1b265336369ea05626b4498" +dependencies = [ + "attribute-derive-macro", + "proc-macro2", + "quote", + "syn 2.0.93", +] + +[[package]] +name = "attribute-derive-macro" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b217a07446e0fb086f83401a98297e2d81492122f5874db5391bd270a185f88" +dependencies = [ + "collection_literals", + "interpolator", + "proc-macro-error", + "proc-macro-utils", + "proc-macro2", + "quote", + "quote-use", + "syn 2.0.93", +] + +[[package]] +name = "auto_enums" +version = "0.8.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9c170965892137a3a9aeb000b4524aa3cc022a310e709d848b6e1cdce4ab4781" +dependencies = [ + "derive_utils", + "proc-macro2", + "quote", + "syn 2.0.93", +] + +[[package]] +name = "autocfg" +version = "0.1.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0dde43e75fd43e8a1bf86103336bc699aa8d17ad1be60c76c0bdfd4828e19b78" +dependencies = [ + "autocfg 1.4.0", ] [[package]] @@ -141,6 +367,57 @@ version = "1.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ace50bade8e6234aa140d9a2f552bbee1db4d353f69b8217bc503490fc1a9f26" +[[package]] +name = "axum" +version = "0.6.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3b829e4e32b91e643de6eafe82b1d90675f5874230191a4ffbc1b336dec4d6bf" +dependencies = [ + "async-trait", + "axum-core", + "bitflags 1.3.2", + "bytes", + "futures-util", + "http 0.2.12", + "http-body 0.4.6", + "hyper 0.14.32", + "itoa", + "matchit", + "memchr", + "mime 0.3.17", + "percent-encoding 2.3.1", + "pin-project-lite", + "rustversion", + "serde", + "sync_wrapper 0.1.2", + "tower 0.4.13", + "tower-layer", + "tower-service", +] + +[[package]] +name = "axum-core" +version = "0.3.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "759fa577a247914fd3f7f76d62972792636412fbfd634cd452f6a385a74d2d2c" +dependencies = [ + "async-trait", + "bytes", + "futures-util", + "http 0.2.12", + "http-body 0.4.6", + "mime 0.3.17", + "rustversion", + "tower-layer", + "tower-service", +] + +[[package]] +name = "az" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7b7e4c2464d97fe331d41de9d5db0def0a96f4d823b8b32a2efd503578988973" + [[package]] name = "backtrace" version = "0.3.74" @@ -150,12 +427,22 @@ dependencies = [ "addr2line", "cfg-if", "libc", - "miniz_oxide", + "miniz_oxide 0.8.2", "object", "rustc-demangle", "windows-targets 0.52.6", ] +[[package]] +name = "base64" +version = "0.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "489d6c0ed21b11d038c31b6ceccca973e65d73ba3bd8ecb9a2babf5546164643" +dependencies = [ + "byteorder", + "safemem", +] + [[package]] name = "base64" version = "0.13.1" @@ -174,6 +461,19 @@ version = "0.22.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6" +[[package]] +name = "biblatex" +version = "0.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "27fe7285040d0227cd8b5395e1c4783f44f0b673eca5a657f4432ae401f2b7b8" +dependencies = [ + "numerals", + "paste", + "strum 0.26.3", + "unicode-normalization", + "unscanny", +] + [[package]] name = "bincode" version = "1.3.3" @@ -198,6 +498,12 @@ version = "0.6.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "349f9b6a179ed607305526ca489b34ad0a41aed5f7980fa90eb03160b69598fb" +[[package]] +name = "bit_field" +version = "0.10.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc827186963e592360843fb5ba4b973e145841266c1357f7180c43526f2e5b61" + [[package]] name = "bitflags" version = "1.3.2" @@ -206,9 +512,24 @@ checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" [[package]] name = "bitflags" -version = "2.6.0" +version = "2.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1b8e56985ec62d17e9c1001dc89c88ecd7dc08e47eba5ec7c29c7b5eeecde967" +dependencies = [ + "serde", +] + +[[package]] +name = "bitvec" +version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b048fb63fd8b5923fc5aa7b340d8e156aec7ec02f0c78fa8a6ddc2613f6f71de" +checksum = "1bc2832c24239b0141d5674bb9174f9d68a8b5b3f2753311927c172ca46f7e9c" +dependencies = [ + "funty", + "radium", + "tap", + "wyz", +] [[package]] name = "block" @@ -225,11 +546,77 @@ dependencies = [ "generic-array", ] +[[package]] +name = "block2" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2c132eebf10f5cad5289222520a4a058514204aed6d791f1cf4fe8088b82d15f" +dependencies = [ + "objc2 0.5.2", +] + +[[package]] +name = "block2" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "340d2f0bdb2a43c1d3cd40513185b2bd7def0aa1052f956455114bc98f82dcf2" +dependencies = [ + "objc2 0.6.1", +] + +[[package]] +name = "bon" +version = "3.6.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f61138465baf186c63e8d9b6b613b508cd832cba4ce93cf37ce5f096f91ac1a6" +dependencies = [ + "bon-macros", + "rustversion", +] + +[[package]] +name = "bon-macros" +version = "3.6.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "40d1dad34aa19bf02295382f08d9bc40651585bd497266831d40ee6296fb49ca" +dependencies = [ + "darling", + "ident_case", + "prettyplease", + "proc-macro2", + "quote", + "rustversion", + "syn 2.0.93", +] + +[[package]] +name = "borsh" +version = "1.5.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ad8646f98db542e39fc66e68a20b2144f6a732636df7c2354e74645faaa433ce" +dependencies = [ + "borsh-derive", + "cfg_aliases", +] + +[[package]] +name = "borsh-derive" +version = "1.5.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fdd1d3c0c2f5833f22386f252fe8ed005c7f59fdcddeef025c01b4c3b9fd9ac3" +dependencies = [ + "once_cell", + "proc-macro-crate 3.3.0", + "proc-macro2", + "quote", + "syn 2.0.93", +] + [[package]] name = "brotli" -version = "6.0.0" +version = "8.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "74f7971dbd9326d58187408ab83117d8ac1bb9c17b085fdacd1cf2f598719b6b" +checksum = "9991eea70ea4f293524138648e41ee89b0b2b12ddef3b255effa43c8056e0e0d" dependencies = [ "alloc-no-stdlib", "alloc-stdlib", @@ -238,9 +625,9 @@ dependencies = [ [[package]] name = "brotli-decompressor" -version = "4.0.1" +version = "5.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9a45bd2e4095a8b518033b128020dd4a55aab1c0a381ba4404a472630f4bc362" +checksum = "874bb8112abecc98cbd6d81ea4fa7e94fb9449648c93cc89aa40c81c24d7de03" dependencies = [ "alloc-no-stdlib", "alloc-stdlib", @@ -258,16 +645,60 @@ dependencies = [ ] [[package]] -name = "bumpalo" -version = "3.16.0" +name = "buf_redux" +version = "0.8.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "79296716171880943b8470b5f8d03aa55eb2e645a4874bdbb28adb49162e012c" +checksum = "b953a6887648bb07a535631f2bc00fbdb2a2216f135552cb3f534ed136b9c07f" +dependencies = [ + "memchr", + "safemem", +] [[package]] -name = "bytemuck" -version = "1.21.0" +name = "bumpalo" +version = "3.18.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ef657dfab802224e671f5818e9a4935f9b1957ed18e58292690cc39e7a4092a3" +checksum = "793db76d6187cd04dff33004d8e6c9cc4e05cd330500379d2394209271b4aeee" + +[[package]] +name = "by_address" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "64fa3c856b712db6612c019f14756e64e4bcea13337a6b33b696333a9eaa2d06" + +[[package]] +name = "bytecheck" +version = "0.6.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "23cdc57ce23ac53c931e88a43d06d070a6fd142f2617be5855eb75efc9beb1c2" +dependencies = [ + "bytecheck_derive", + "ptr_meta", + "simdutf8", +] + +[[package]] +name = "bytecheck_derive" +version = "0.6.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3db406d29fbcd95542e92559bed4d8ad92636d1ca8b3b72ede10b4bcc010e659" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "bytecount" +version = "0.6.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "175812e0be2bccb6abe50bb8d566126198344f707e304f45c648fd8f2cc0365e" + +[[package]] +name = "bytemuck" +version = "1.21.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ef657dfab802224e671f5818e9a4935f9b1957ed18e58292690cc39e7a4092a3" [[package]] name = "byteorder" @@ -275,51 +706,117 @@ 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 = "1.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "325918d6fe32f23b19878fe4b34794ae41fc19ddbe53b10571a4874d44ffd39b" +dependencies = [ + "serde", +] [[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.9.1", "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 = "calamine" +version = "0.24.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8a3a315226fdc5b1c3e33521073e1712a05944bc0664d665ff1f6ff0396334da" +dependencies = [ + "byteorder", + "codepage", + "encoding_rs", + "log 0.4.27", + "quick-xml 0.31.0", + "serde", + "zip 0.6.6", +] + +[[package]] +name = "camino" +version = "1.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0da45bc31171d8d6960122e222a67740df867c1dd53b4d51caa297084c185cab" +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.19.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dd5eb614ed4c27c5d706420e4320fbe3216ab31fa1c33cd8246ac36dae4479ba" +dependencies = [ + "camino", + "cargo-platform", + "semver", + "serde", + "serde_json", + "thiserror 2.0.12", ] [[package]] name = "cargo_toml" -version = "0.15.3" +version = "0.22.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "599aa35200ffff8f04c1925aa1acc92fa2e08874379ef42e210a80e527e60838" +checksum = "02260d489095346e5cafd04dea8e8cb54d1d74fcd759022a9b72986ebe9a1257" dependencies = [ "serde", - "toml 0.7.8", + "toml", +] + +[[package]] +name = "caseless" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b6fd507454086c8edfd769ca6ada439193cdb209c7681712ef6275cccbfe5d8" +dependencies = [ + "unicode-normalization", ] [[package]] name = "cc" -version = "1.2.6" +version = "1.2.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8d6dbb628b8f8555f86d0323c2eb39e3ec81901f4b83e091db8a6a76d316a333" +checksum = "d487aa071b5f64da6f19a3e848e3578944b726ee5a4854b82172f02aa876bfdc" dependencies = [ "shlex", ] @@ -341,15 +838,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" @@ -366,6 +854,30 @@ version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" +[[package]] +name = "cfg_aliases" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "613afe47fcd5fac7ccf1db93babcb082c5994d996f20b8b159f2ad1658eb5724" + +[[package]] +name = "chinese-number" +version = "0.7.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "49fccaef6346f6d6a741908d3b79fe97c2debe2fbb5eb3a7d00ff5981b52bb6c" +dependencies = [ + "chinese-variant", + "enum-ordinalize", + "num-bigint", + "num-traits", +] + +[[package]] +name = "chinese-variant" +version = "1.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7588475145507237ded760e52bf2f1085495245502033756d28ea72ade0e498b" + [[package]] name = "chrono" version = "0.4.39" @@ -381,6 +893,49 @@ dependencies = [ "windows-targets 0.52.6", ] +[[package]] +name = "chunked_transfer" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "498d20a7aaf62625b9bf26e637cf7736417cde1d0c99f1d04d1170229a85cf87" + +[[package]] +name = "ciborium" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "42e69ffd6f0917f5c029256a24d0161db17cea3997d185db0d35926308770f0e" +dependencies = [ + "ciborium-io", + "ciborium-ll", + "serde", +] + +[[package]] +name = "ciborium-io" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "05afea1e0a06c9be33d539b876f1ce3692f4afea2cb41f740e7743225ed1c757" + +[[package]] +name = "ciborium-ll" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "57663b653d948a338bfb3eeba9bb2fd5fcfaecb9e199e87e1eda4d9e8b240fd9" +dependencies = [ + "ciborium-io", + "half 2.6.0", +] + +[[package]] +name = "citationberg" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d259fe9fd78ffa05a119581d20fddb50bfba428311057b12741ffb9015123d0b" +dependencies = [ + "quick-xml 0.31.0", + "serde", +] + [[package]] name = "clap" version = "4.5.23" @@ -423,35 +978,73 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f46ad14479a25103f283c0f10005961cf086d8dc42205bb44c46ac563475dca6" [[package]] -name = "cocoa" -version = "0.24.1" +name = "clipboard-win" +version = "5.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "15efe7a882b08f34e38556b14f2fb3daa98769d06c7f0c1b076dfd0d983bc892" +dependencies = [ + "error-code", +] + +[[package]] +name = "cloudabi" +version = "0.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f425db7937052c684daec3bd6375c8abe2d146dca4b8b143d6db777c39138f3a" +checksum = "ddfc5b9aa5d4507acaf872de71051dfd0e309860e88966e1051e462a077aac4f" dependencies = [ "bitflags 1.3.2", +] + +[[package]] +name = "cobs" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "67ba02a97a2bd10f4b59b25c7973101c79642302776489e030cd13cdab09ed15" + +[[package]] +name = "cocoa" +version = "0.26.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ad36507aeb7e16159dfe68db81ccc27571c3ccd4b76fb2fb72fc59e7a4b1b64c" +dependencies = [ + "bitflags 2.9.1", "block", "cocoa-foundation", - "core-foundation", + "core-foundation 0.10.1", "core-graphics", - "foreign-types", + "foreign-types 0.5.0", "libc", "objc", ] [[package]] name = "cocoa-foundation" -version = "0.1.2" +version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8c6234cbb2e4c785b456c0644748b1ac416dd045799740356f8363dfe00c93f7" +checksum = "81411967c50ee9a1fc11365f8c585f863a22a9697c89239c452292c40ba79b0d" dependencies = [ - "bitflags 1.3.2", + "bitflags 2.9.1", "block", - "core-foundation", + "core-foundation 0.10.1", "core-graphics-types", - "libc", "objc", ] +[[package]] +name = "codepage" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "48f68d061bc2828ae826206326e61251aca94c1e4a5305cf52d9138639c918b4" +dependencies = [ + "encoding_rs", +] + +[[package]] +name = "collection_literals" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "186dce98367766de751c42c4f03970fc60fc012296e706ccbb9d5df9b6c1e271" + [[package]] name = "color_quant" version = "1.1.0" @@ -464,6 +1057,16 @@ version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5b63caa9aa9397e2d9480a9b13673856c78d8ac123288526c37d7839f2a86990" +[[package]] +name = "colored" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "117725a109d387c937a1533ce01b450cbde6b88abceea8473c4d7a85853cda3c" +dependencies = [ + "lazy_static", + "windows-sys 0.59.0", +] + [[package]] name = "combine" version = "4.6.7" @@ -474,13 +1077,38 @@ dependencies = [ "memchr", ] +[[package]] +name = "comemo" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "df6916408a724339aa77b18214233355f3eb04c42eb895e5f8909215bd8a7a91" +dependencies = [ + "comemo-macros", + "once_cell", + "parking_lot", + "siphasher 1.0.1", +] + +[[package]] +name = "comemo-macros" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c8936e42f9b4f5bdfaf23700609ac1f11cb03ad4c1ec128a4ee4fd0903e228db" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.93", +] + [[package]] name = "comrak" -version = "0.18.0" +version = "0.28.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "482aa5695bca086022be453c700a40c02893f1ba7098a2c88351de55341ae894" +checksum = "c93ab3577cca16b4a1d80a88c2e0cd8b6e969e51696f0bbb0d1dcb0157109832" dependencies = [ + "caseless", "clap", + "derive_builder", "entities", "memchr", "once_cell", @@ -493,12 +1121,89 @@ dependencies = [ "xdg", ] +[[package]] +name = "comrak" +version = "0.39.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2fefab951771fc3beeed0773ce66a4f7b706273fc6c4c95b08dd1615744abcf5" +dependencies = [ + "bon", + "caseless", + "clap", + "entities", + "memchr", + "shell-words", + "slug", + "syntect", + "typed-arena", + "unicode_categories", + "xdg", +] + +[[package]] +name = "concurrent-queue" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4ca0197aee26d1ae37445ee532fefce43251d24cc7c166799f4d46817f1d3973" +dependencies = [ + "crossbeam-utils", +] + +[[package]] +name = "const-random" +version = "0.1.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "87e00182fe74b066627d63b85fd550ac2998d4b0bd86bfed477a0ae4c7c71359" +dependencies = [ + "const-random-macro", +] + +[[package]] +name = "const-random-macro" +version = "0.1.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f9d839f2a20b0aee515dc581a6172f2321f96cab76c1a38a4c584a194955390e" +dependencies = [ + "getrandom 0.2.15", + "once_cell", + "tiny-keccak", +] + [[package]] name = "convert_case" 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 = [ + "percent-encoding 2.3.1", + "time 0.3.37", + "version_check 0.9.5", +] + +[[package]] +name = "cookie_store" +version = "0.21.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2eac901828f88a5241ee0600950ab981148a18f2f756900ffba1b125ca6a3ef9" +dependencies = [ + "cookie", + "document-features", + "idna 1.0.3", + "log 0.4.27", + "publicsuffix", + "serde", + "serde_derive", + "serde_json", + "time 0.3.37", + "url 2.5.4", +] + [[package]] name = "core-foundation" version = "0.9.4" @@ -509,6 +1214,16 @@ dependencies = [ "libc", ] +[[package]] +name = "core-foundation" +version = "0.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b2a6cd9ae233e7f62ba4e9353e81a88df7fc8a5987b8d445b4d90c879bd156f6" +dependencies = [ + "core-foundation-sys", + "libc", +] + [[package]] name = "core-foundation-sys" version = "0.8.7" @@ -517,28 +1232,37 @@ 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", + "bitflags 2.9.1", + "core-foundation 0.10.1", "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", + "bitflags 2.9.1", + "core-foundation 0.10.1", "libc", ] +[[package]] +name = "core_maths" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77745e017f5edba1a9c1d854f6f3a52dac8a12dd5af5d2f54aecf61e43d80d30" +dependencies = [ + "libm", +] + [[package]] name = "cpufeatures" version = "0.2.16" @@ -591,6 +1315,12 @@ version = "0.8.21" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d0a5c400df2834b80a4c3327b3aad3a4c4cd4de0629063962b03235697506a28" +[[package]] +name = "crunchy" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "43da5946c66ffcc7745f48db692ffbb10a83bfe0afd96235c5c2a4fb23994929" + [[package]] name = "crypto-common" version = "0.1.6" @@ -603,15 +1333,15 @@ dependencies = [ [[package]] name = "cssparser" -version = "0.27.2" +version = "0.29.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "754b69d351cdc2d8ee09ae203db831e005560fc6030da058f86ad60c92a9cb0a" +checksum = "f93d03419cb5950ccfd3daf3ff1c7a36ace64609a1a8746d493df1ca0afde0fa" dependencies = [ "cssparser-macros", "dtoa-short", - "itoa 0.4.8", + "itoa", "matches", - "phf 0.8.0", + "phf 0.10.1", "proc-macro2", "quote", "smallvec", @@ -619,15 +1349,49 @@ dependencies = [ ] [[package]] -name = "cssparser-macros" -version = "0.6.1" +name = "cssparser" +version = "0.31.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "13b588ba4ac1a99f7f2964d24b3d896ddc6bf847ee3855dbd4366f058cfcd331" +checksum = "5b3df4f93e5fbbe73ec01ec8d3f68bba73107993a5b1e7519273c32db9b0d5be" +dependencies = [ + "cssparser-macros", + "dtoa-short", + "itoa", + "phf 0.11.2", + "smallvec", +] + +[[package]] +name = "cssparser-macros" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "13b588ba4ac1a99f7f2964d24b3d896ddc6bf847ee3855dbd4366f058cfcd331" dependencies = [ "quote", "syn 2.0.93", ] +[[package]] +name = "csv" +version = "1.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "acdc4883a9c96732e4733212c01447ebd805833b7275a73ca3ee080fd77afdaf" +dependencies = [ + "csv-core", + "itoa", + "ryu", + "serde", +] + +[[package]] +name = "csv-core" +version = "0.1.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7d02f3b0da4c6504f86e9cd789d8dbafab48c2321be74e9987593de5a894d93d" +dependencies = [ + "memchr", +] + [[package]] name = "ctor" version = "0.2.9" @@ -673,6 +1437,12 @@ dependencies = [ "syn 2.0.93", ] +[[package]] +name = "data-url" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c297a1c74b71ae29df00c3e22dd9534821d60eb9af5a0192823fa2acea70c2a" + [[package]] name = "deranged" version = "0.3.11" @@ -683,6 +1453,70 @@ dependencies = [ "serde", ] +[[package]] +name = "derivative" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fcc3dd5e9e9c0b295d6e1e4d811fb6f157d5ffd784b8d202fc62eac8035a770b" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "derive-where" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "510c292c8cf384b1a340b816a9a6cf2599eb8f566a44949024af88418000c50b" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.93", +] + +[[package]] +name = "derive_arbitrary" +version = "1.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "30542c1ad912e0e3d22a1935c290e12e8a29d704a420177a31faad4a601a0800" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.93", +] + +[[package]] +name = "derive_builder" +version = "0.20.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "507dfb09ea8b7fa618fcf76e953f4f5e192547945816d5358edffe39f6f94947" +dependencies = [ + "derive_builder_macro", +] + +[[package]] +name = "derive_builder_core" +version = "0.20.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2d5bcf7b024d6835cfb3d473887cd966994907effbe9227e8c8219824d06c4e8" +dependencies = [ + "darling", + "proc-macro2", + "quote", + "syn 2.0.93", +] + +[[package]] +name = "derive_builder_macro" +version = "0.20.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ab63b0e2bf4d5928aff72e83a7dace85d7bba5fe12dcc3c5a572d78caffd3f3c" +dependencies = [ + "derive_builder_core", + "syn 2.0.93", +] + [[package]] name = "derive_more" version = "0.99.18" @@ -696,12 +1530,65 @@ dependencies = [ "syn 2.0.93", ] +[[package]] +name = "derive_utils" +version = "0.15.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ccfae181bab5ab6c5478b2ccb69e4c68a02f8c3ec72f6616bfec9dbc599d2ee0" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.93", +] + [[package]] name = "deunicode" version = "1.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "339544cc9e2c4dc3fc7149fd630c5f22263a4fdf18a98afd0075784968b5cf00" +[[package]] +name = "devtools-core" +version = "0.3.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e78cdd51f6f62ad4eb9b6581d7e238e1779db3144ddbd711388f552e6ed3194b" +dependencies = [ + "async-stream", + "bytes", + "devtools-wire-format", + "futures", + "http 0.2.12", + "hyper 0.14.32", + "log 0.4.27", + "prost-types", + "ringbuf", + "thiserror 1.0.69", + "tokio", + "tokio-stream", + "tonic", + "tonic-health", + "tonic-web", + "tower 0.4.13", + "tower-http 0.4.4", + "tower-layer", + "tracing", + "tracing-core", + "tracing-subscriber", +] + +[[package]] +name = "devtools-wire-format" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a1c0de542960449c9566001c1879d10ede95f3f2e0013fdae0cc3b153bfabb0d" +dependencies = [ + "bitflags 2.9.1", + "prost", + "prost-types", + "tonic", + "tracing-core", +] + [[package]] name = "digest" version = "0.10.7" @@ -718,17 +1605,16 @@ version = "5.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "44c45a9d03d6676652bcb5e724c7e988de1acad23a711b5217ab9cbecbec2225" dependencies = [ - "dirs-sys", + "dirs-sys 0.4.1", ] [[package]] -name = "dirs-next" -version = "2.0.0" +name = "dirs" +version = "6.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b98cf8ebf19c3d1b223e151f99a4f9f0690dca41414773390fc824184ac833e1" +checksum = "c3e8aa94d75141228480295a7d0e7feb620b1a5ad9f12bc40be62411e38cce4e" dependencies = [ - "cfg-if", - "dirs-sys-next", + "dirs-sys 0.5.0", ] [[package]] @@ -739,19 +1625,20 @@ checksum = "520f05a5cbd335fae5a99ff7a6ab8627577660ee5cfd6a94a6a929b52ff0321c" dependencies = [ "libc", "option-ext", - "redox_users", + "redox_users 0.4.6", "windows-sys 0.48.0", ] [[package]] -name = "dirs-sys-next" -version = "0.1.2" +name = "dirs-sys" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ebda144c4fe02d1f7ea1a7d9641b6fc6b580adcfa024ae48797ecdeb6825b4d" +checksum = "e01a3366d27ee9890022452ee61b2b63a67e6f13f58900b651ff5665f0bb1fab" dependencies = [ "libc", - "redox_users", - "winapi", + "option-ext", + "redox_users 0.5.0", + "windows-sys 0.60.2", ] [[package]] @@ -760,6 +1647,28 @@ version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bd0c93bb4b0c6d9b77f4435b0ae98c24d17f1c45b2ff844c6151a07256ca923b" +[[package]] +name = "dispatch2" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1a0d569e003ff27784e0e14e4a594048698e0c0f0b66cabcb51511be55a7caa0" +dependencies = [ + "bitflags 2.9.1", + "block2 0.6.1", + "libc", + "objc2 0.6.1", +] + +[[package]] +name = "dispatch2" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "89a09f22a6c6069a18470eb92d2298acf25463f14256d24778e1230d789a2aec" +dependencies = [ + "bitflags 2.9.1", + "objc2 0.6.1", +] + [[package]] name = "displaydoc" version = "0.2.5" @@ -771,6 +1680,77 @@ dependencies = [ "syn 2.0.93", ] +[[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.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "788160fb30de9cdd857af31c6a2675904b16ece8fc2737b2c7127ba368c9d0f4" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.93", +] + +[[package]] +name = "dlv-list" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "442039f5147480ba31067cb00ada1adae6892028e40e45fc5de7b7df6dcc1b5f" +dependencies = [ + "const-random", +] + +[[package]] +name = "document-features" +version = "0.2.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "95249b50c6c185bee49034bcb378a49dc2b5dff0be90ff6616d31d64febab05d" +dependencies = [ + "litrs", +] + +[[package]] +name = "docx-rs" +version = "0.4.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e593b51d4fe95d69d70fd40da4b314b029736302c986c3c760826e842fd27dc3" +dependencies = [ + "base64 0.13.1", + "image 0.24.9", + "serde", + "serde_json", + "thiserror 1.0.69", + "xml-rs", + "zip 0.6.6", +] + +[[package]] +name = "downcast-rs" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "75b325c5dbd37f80359721ad39aca5a29fb04c89279657cffdda8736d0c0b9d2" + +[[package]] +name = "dpi" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d8b14ccef22fc6f5a8f4d7d768562a182c04ce9a3b3157b91390b52ddfdf1a76" +dependencies = [ + "serde", +] + [[package]] name = "dtoa" version = "1.0.9" @@ -792,24 +1772,59 @@ version = "1.0.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "92773504d58c093f6de2459af4af33faa518c13451eb8f2b5698ed3d36e7c813" +[[package]] +name = "dyn-clone" +version = "1.0.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1c7a8fb8a9fbf66c1f703fe16184d10ca0ee9d23be5b4436400408ba54a95005" + +[[package]] +name = "ecow" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b92b481eb5d59fd8e80e92ff11d057d1ca8d144b2cd8c66cc8d5bd177a3c0dc5" +dependencies = [ + "serde", +] + +[[package]] +name = "ego-tree" +version = "0.6.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "12a0bb14ac04a9fcf170d0bbbef949b44cc492f4452bd20c095636956f653642" + +[[package]] +name = "ehttp" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "59a81c221a1e4dad06cb9c9deb19aea1193a5eea084e8cd42d869068132bf876" +dependencies = [ + "document-features", + "js-sys", + "ureq", + "wasm-bindgen", + "wasm-bindgen-futures", + "web-sys", +] + [[package]] name = "either" -version = "1.13.0" +version = "1.15.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "60b1af1c220855b6ceac025d3f6ecdd2b7c4894bfe9cd9bda4fbb4bc7c0d4cf0" +checksum = "48c757948c5ede0e46177b7add2e67155f70e33c07fea8284df6576da70b3719" [[package]] name = "embed-resource" -version = "2.5.1" +version = "3.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b68b6f9f63a0b6a38bc447d4ce84e2b388f3ec95c99c641c8ff0dd3ef89a6379" +checksum = "0963f530273dc3022ab2bdc3fcd6d488e850256f2284a82b7413cb9481ee85dd" dependencies = [ "cc", "memchr", "rustc_version", - "toml 0.8.19", + "toml", "vswhom", - "winreg 0.52.0", + "winreg 0.55.0", ] [[package]] @@ -818,6 +1833,18 @@ version = "1.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4ef6b89e5b37196644d8796de5268852ff179b44e96276cf4290264843743bb7" +[[package]] +name = "embedded-io" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ef1a6892d9eef45c8fa6b9e0086428a2cca8491aca8f787c534a3d6d0bcb3ced" + +[[package]] +name = "embedded-io" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "edd0f118536f44f5ccd48bcb8b111bdc3de888b58c74639dfb034a357d0f206d" + [[package]] name = "encoding_rs" version = "0.8.35" @@ -828,70 +1855,176 @@ dependencies = [ ] [[package]] -name = "entities" -version = "1.0.1" +name = "endi" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b5320ae4c3782150d900b79807611a59a99fc9a1d61d686faafc24b93fc8d7ca" +checksum = "a3d8a32ae18130a3c84dd492d4215c3d913c3b07c6b63c2eb3eb7ff1101ab7bf" [[package]] -name = "equivalent" +name = "entities" version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5" +checksum = "b5320ae4c3782150d900b79807611a59a99fc9a1d61d686faafc24b93fc8d7ca" [[package]] -name = "errno" -version = "0.3.10" +name = "enum-ordinalize" +version = "4.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "33d852cb9b869c2a9b3df2f71a3074817f01e1844f839a144f5fcef059a4eb5d" +checksum = "fea0dcfa4e54eeb516fe454635a95753ddd39acda650ce703031c6973e315dd5" dependencies = [ - "libc", - "windows-sys 0.59.0", + "enum-ordinalize-derive", ] [[package]] -name = "fancy-regex" -version = "0.11.0" +name = "enum-ordinalize-derive" +version = "4.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b95f7c0680e4142284cf8b22c14a476e87d61b004a3a0861872b32ef7ead40a2" +checksum = "0d28318a75d4aead5c4db25382e8ef717932d0346600cacae6357eb5941bc5ff" dependencies = [ - "bit-set", - "regex", + "proc-macro2", + "quote", + "syn 2.0.93", ] [[package]] -name = "fastrand" -version = "2.3.0" +name = "enumflags2" +version = "0.7.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "37909eebbb50d72f9059c3b6d82c0463f2ff062c9e95845c43a6c9c0355411be" +checksum = "1027f7680c853e056ebcec683615fb6fbbc07dbaa13b4d5d9442b146ded4ecef" +dependencies = [ + "enumflags2_derive", + "serde", +] [[package]] -name = "fdeflate" -version = "0.3.7" +name = "enumflags2_derive" +version = "0.7.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e6853b52649d4ac5c0bd02320cddc5ba956bdb407c4b75a2c6b75bf51500f8c" +checksum = "67c78a4d8fdf9953a5c9d458f9efe940fd97a0cab0941c075a813ac594733827" dependencies = [ - "simd-adler32", + "proc-macro2", + "quote", + "syn 2.0.93", ] [[package]] -name = "field-offset" -version = "0.3.6" +name = "equivalent" +version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38e2275cc4e4fc009b0669731a1e5ab7ebf11f469eaede2bab9309a5b4d6057f" +checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5" + +[[package]] +name = "erased-serde" +version = "0.4.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e004d887f51fcb9fef17317a2f3525c887d8aa3f4f50fed920816a688284a5b7" dependencies = [ - "memoffset", - "rustc_version", + "serde", + "typeid", ] [[package]] -name = "filedime" -version = "0.9.7" -dependencies = [ - "chrono", - "comrak", - "dirs", - "filesize", +name = "errno" +version = "0.3.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "33d852cb9b869c2a9b3df2f71a3074817f01e1844f839a144f5fcef059a4eb5d" +dependencies = [ + "libc", + "windows-sys 0.59.0", +] + +[[package]] +name = "error-code" +version = "3.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dea2df4cf52843e0452895c455a1a2cfbb842a1e7329671acf418fdc53ed4c59" + +[[package]] +name = "event-listener" +version = "5.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3492acde4c3fc54c845eaab3eed8bd00c7a7d881f78bfc801e43a93dec1331ae" +dependencies = [ + "concurrent-queue", + "parking", + "pin-project-lite", +] + +[[package]] +name = "event-listener-strategy" +version = "0.5.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8be9f3dfaaffdae2972880079a491a1a8bb7cbed0b8dd7a347f668b4150a3b93" +dependencies = [ + "event-listener", + "pin-project-lite", +] + +[[package]] +name = "exr" +version = "1.73.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f83197f59927b46c04a183a619b7c29df34e63e63c7869320862268c0ef687e0" +dependencies = [ + "bit_field", + "half 2.6.0", + "lebe", + "miniz_oxide 0.8.2", + "rayon-core", + "smallvec", + "zune-inflate", +] + +[[package]] +name = "fancy-regex" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b95f7c0680e4142284cf8b22c14a476e87d61b004a3a0861872b32ef7ead40a2" +dependencies = [ + "bit-set", + "regex", +] + +[[package]] +name = "fast-srgb8" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dd2e7510819d6fbf51a5545c8f922716ecfb14df168a3242f7d33e0239efe6a1" + +[[package]] +name = "fastrand" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "37909eebbb50d72f9059c3b6d82c0463f2ff062c9e95845c43a6c9c0355411be" + +[[package]] +name = "fdeflate" +version = "0.3.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e6853b52649d4ac5c0bd02320cddc5ba956bdb407c4b75a2c6b75bf51500f8c" +dependencies = [ + "simd-adler32", +] + +[[package]] +name = "field-offset" +version = "0.3.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "38e2275cc4e4fc009b0669731a1e5ab7ebf11f469eaede2bab9309a5b4d6057f" +dependencies = [ + "memoffset", + "rustc_version", +] + +[[package]] +name = "filedime" +version = "0.9.7" +dependencies = [ + "anyhow", + "chrono", + "comrak 0.39.1", + "dirs 5.0.1", + "filesize", "filetime", "fs_extra", "fuzzy-matcher", @@ -899,21 +2032,40 @@ dependencies = [ "imagesize", "include_dir", "libc", - "local-ip-address", + "lnk", + "local-ip-address 0.6.3", + "memvdb", + "multipart", "num_cpus", + "ollama-rs", "opener", + "plist", "prefstore", "rayon", "regex", - "reqwest", - "rustc-hash", + "reqwest 0.11.27", + "rustc-hash 1.1.0", "serde", "serde_json", + "shiva", "syntect", "sysinfo", "tauri", "tauri-build", + "tauri-plugin-clipboard-manager", + "tauri-plugin-deep-link", + "tauri-plugin-devtools", + "tauri-plugin-dialog", + "tauri-plugin-fs", + "tauri-plugin-http", + "tauri-plugin-os", + "tauri-plugin-process", + "tauri-plugin-shell", + "tauri-plugin-window-state", + "text-splitter", "tokio", + "walkdir", + "winreg 0.52.0", ] [[package]] @@ -937,6 +2089,12 @@ dependencies = [ "windows-sys 0.59.0", ] +[[package]] +name = "fixedbitset" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0ce7134b9999ecaf8bcd65542e436736ef32ddca1b3e06094cb6ec5755203b80" + [[package]] name = "flate2" version = "1.0.35" @@ -944,17 +2102,14 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c936bfdafb507ebbf50b8074c54fa31c5be9a1e7e5f467dd659697041407d07c" dependencies = [ "crc32fast", - "miniz_oxide", + "miniz_oxide 0.8.2", ] [[package]] -name = "fluent-uri" -version = "0.1.4" +name = "float-cmp" +version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "17c704e9dbe1ddd863da1e6ff3567795087b1eb201ce80d8fa81162e1516500d" -dependencies = [ - "bitflags 1.3.2", -] +checksum = "98de4bbd547a563b716d8dfa9aad1cb19bfab00f4fa09a6a4ed21dbcf44ce9c4" [[package]] name = "fnv" @@ -962,13 +2117,57 @@ version = "1.0.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" +[[package]] +name = "fontconfig-parser" +version = "0.5.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bbc773e24e02d4ddd8395fd30dc147524273a83e54e0f312d986ea30de5f5646" +dependencies = [ + "roxmltree 0.20.0", +] + +[[package]] +name = "fontdb" +version = "0.16.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b0299020c3ef3f60f526a4f64ab4a3d4ce116b1acbf24cdd22da0068e5d81dc3" +dependencies = [ + "fontconfig-parser", + "log 0.4.27", + "memmap2", + "slotmap", + "tinyvec", + "ttf-parser", +] + [[package]] name = "foreign-types" 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" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d737d9aa519fb7b749cbc3b962edcf310a8dd1f4b67c91c4f83975dbdd17d965" +dependencies = [ + "foreign-types-macros", + "foreign-types-shared 0.3.1", +] + +[[package]] +name = "foreign-types-macros" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1a5c6c585bc94aaf2c7b51dd4c2ba22680844aba4c687be581871a6f518c5742" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.93", ] [[package]] @@ -977,19 +2176,37 @@ 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", + "percent-encoding 2.3.1", ] [[package]] name = "fs_extra" version = "1.3.0" +[[package]] +name = "fuchsia-cprng" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a06f77d526c1a601b7c4cdd98f54b5eaabffc14d5f2f0296febdc7f357c6d3ba" + +[[package]] +name = "funty" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e6d5a32815ae3f33302d95fdcb2ce17862f8c65363dcfd29360480ba1001fc9c" + [[package]] name = "futf" version = "0.1.5" @@ -1000,6 +2217,21 @@ dependencies = [ "new_debug_unreachable", ] +[[package]] +name = "futures" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "65bc07b1a8bc7c85c5f2e110c476c7389b4554ba72af57d8445ea63a576b0876" +dependencies = [ + "futures-channel", + "futures-core", + "futures-executor", + "futures-io", + "futures-sink", + "futures-task", + "futures-util", +] + [[package]] name = "futures-channel" version = "0.3.31" @@ -1007,6 +2239,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2dff15bf788c671c1934e366d07e30c1814a8ef514e1af724a602e8a2fbe1b10" dependencies = [ "futures-core", + "futures-sink", ] [[package]] @@ -1032,6 +2265,19 @@ version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9e5c1b78ca4aae1ac06c48a526a655760685149f0d465d21f37abfe57ce075c6" +[[package]] +name = "futures-lite" +version = "2.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f5edaec856126859abb19ed65f39e90fea3a9574b9707f13539acf4abf7eb532" +dependencies = [ + "fastrand", + "futures-core", + "futures-io", + "parking", + "pin-project-lite", +] + [[package]] name = "futures-macro" version = "0.3.31" @@ -1061,9 +2307,13 @@ version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9fa08315bb612088cc391249efdc3bc77536f16c91f6cf495e6fbe85b20a4a81" dependencies = [ + "futures-channel", "futures-core", + "futures-io", "futures-macro", + "futures-sink", "futures-task", + "memchr", "pin-project-lite", "pin-utils", "slab", @@ -1089,11 +2339,10 @@ dependencies = [ [[package]] name = "gdk" -version = "0.15.4" +version = "0.18.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a6e05c1f572ab0e1f15be94217f0dc29088c248b14f792a5ff0af0d84bcda9e8" +checksum = "d9f245958c627ac99d8e529166f9823fb3b838d1d41fd2b297af3075093c2691" dependencies = [ - "bitflags 1.3.2", "cairo-rs", "gdk-pixbuf", "gdk-sys", @@ -1105,35 +2354,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.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "32e7a08c1e8f06f4177fb7e51a777b8c1689f743a7bc11ea91d44d2226073a88" +checksum = "5c2d13f38594ac1e66619e188c6d5a1adb98d11b2fcf7894fc416ad76aa2f3f7" dependencies = [ "cairo-sys-rs", "gdk-pixbuf-sys", @@ -1143,47 +2392,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.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cca49a59ad8cfdf36ef7330fe7bdfbe1d34323220cc16a0de2679ee773aee2c2" +checksum = "140071d506d223f7572b9f09b5e155afbd77428cd5cc7af8f2694c41d98dfe69" 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.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b4b7f8c7a84b407aa9b143877e267e848ff34106578b64d1e0a24bf550716178" +checksum = "3caa00e14351bebbc8183b3c36690327eb77c49abc2268dd4bd36b856db3fbfe" 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.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5cc16584ff22b460a382b7feec54b23d2908d858152e5739a120b949293bd74e" +checksum = "6e2e7445fe01ac26f11601db260dd8608fe172514eb63b3b5e261ea6b0f4428d" dependencies = [ - "cc", + "gdk-sys", + "glib-sys", "libc", - "log", - "rustversion", - "windows 0.48.0", + "system-deps", + "x11", ] [[package]] @@ -1193,7 +2443,53 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a" dependencies = [ "typenum", - "version_check", + "version_check 0.9.5", +] + +[[package]] +name = "get-size" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "47b61e2dab7eedce93a83ab3468b919873ff16bac5a3e704011ff836d22b2120" + +[[package]] +name = "get-size-derive" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "13a1bcfb855c1f340d5913ab542e36f25a1c56f57de79022928297632435dec2" +dependencies = [ + "attribute-derive", + "quote", + "syn 2.0.93", +] + +[[package]] +name = "gethostname" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0176e0459c2e4a1fe232f984bca6890e681076abb9934f6cea7c326f3fc47818" +dependencies = [ + "libc", + "windows-targets 0.48.5", +] + +[[package]] +name = "gethostname" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fc257fdb4038301ce4b9cd1b3b51704509692bb3ff716a410cbd07925d9dae55" +dependencies = [ + "rustix 1.0.7", + "windows-targets 0.52.6", +] + +[[package]] +name = "getopts" +version = "0.2.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cba6ae63eb948698e300f645f87c70f76630d505f23b8907cf1e193ee85048c1" +dependencies = [ + "unicode-width", ] [[package]] @@ -1214,8 +2510,44 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c4567c8db10ae91089c99af84c68c38da3ec2f087c3f82960bcdbf3656b6f4d7" dependencies = [ "cfg-if", + "js-sys", "libc", "wasi 0.11.0+wasi-snapshot-preview1", + "wasm-bindgen", +] + +[[package]] +name = "getrandom" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "26145e563e54f2cadc477553f1ec5ee650b00862f0a58bcd12cbdc5f0ea2d2f4" +dependencies = [ + "cfg-if", + "js-sys", + "libc", + "r-efi", + "wasi 0.14.2+wasi-0.2.4", + "wasm-bindgen", +] + +[[package]] +name = "gif" +version = "0.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "80792593675e051cf94a4b111980da2ba60d4a83e43e0048c5693baab3977045" +dependencies = [ + "color_quant", + "weezl", +] + +[[package]] +name = "gif" +version = "0.13.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fcc37f9a2bfe731e69f1e08d29d91d30604b9ce24bcb2880a961e82d89c6ed89" +dependencies = [ + "color_quant", + "weezl", ] [[package]] @@ -1226,77 +2558,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.9.1", "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", + "proc-macro-crate 2.0.0", "proc-macro-error", "proc-macro2", "quote", - "syn 1.0.109", + "syn 2.0.93", ] [[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]] @@ -1313,30 +2649,35 @@ checksum = "15f1ce686646e7f1e19bf7d5533fe443a45dbfb990e00629110797578b42fb19" dependencies = [ "aho-corasick", "bstr", - "log", + "log 0.4.27", "regex-automata 0.4.9", "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]] +name = "groupable" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32619942b8be646939eaf3db0602b39f5229b74575b67efc897811ded1db4e57" + [[package]] name = "gtk" -version = "0.15.5" +version = "0.18.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "92e3004a2d5d6d8b5057d2b57b3712c9529b62e82c77f25c1fecde1fd5c23bd0" +checksum = "fd56fb197bfc42bd5d2751f4f017d44ff59fbb58140c6b49f9b3b2bdab08506a" dependencies = [ "atk", - "bitflags 1.3.2", "cairo-rs", "field-offset", "futures-channel", @@ -1347,16 +2688,15 @@ dependencies = [ "gtk-sys", "gtk3-macros", "libc", - "once_cell", "pango", "pkg-config", ] [[package]] name = "gtk-sys" -version = "0.15.3" +version = "0.18.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d5bc2f0587cba247f60246a0ca11fe25fb733eabc3de12d1965fc07efab87c84" +checksum = "8f29a1c21c59553eb7dd40e918be54dccd60c52b049b75119d5d96ce6b624414" dependencies = [ "atk-sys", "cairo-sys-rs", @@ -1367,21 +2707,20 @@ dependencies = [ "gobject-sys", "libc", "pango-sys", - "system-deps 6.2.2", + "system-deps", ] [[package]] name = "gtk3-macros" -version = "0.15.6" +version = "0.18.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "684c0456c086e8e7e9af73ec5b84e35938df394712054550e81558d21c44ab0d" +checksum = "52ff3c5b21f14f0736fed6dcfc0bfb4225ebf5725f3c0209edeec181e4d73e9d" dependencies = [ - "anyhow", - "proc-macro-crate", + "proc-macro-crate 1.3.1", "proc-macro-error", "proc-macro2", "quote", - "syn 1.0.109", + "syn 2.0.93", ] [[package]] @@ -1395,7 +2734,26 @@ dependencies = [ "futures-core", "futures-sink", "futures-util", - "http", + "http 0.2.12", + "indexmap 2.7.0", + "slab", + "tokio", + "tokio-util", + "tracing", +] + +[[package]] +name = "h2" +version = "0.4.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "17da50a276f1e01e0ba6c029e47b7100754904ee8a278f886546e98575380785" +dependencies = [ + "atomic-waker", + "bytes", + "fnv", + "futures-core", + "futures-sink", + "http 1.3.1", "indexmap 2.7.0", "slab", "tokio", @@ -1403,11 +2761,36 @@ dependencies = [ "tracing", ] +[[package]] +name = "half" +version = "1.8.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1b43ede17f21864e81be2fa654110bf1e793774238d86ef8555c37e6519c0403" + +[[package]] +name = "half" +version = "2.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "459196ed295495a68f7d7fe1d84f6c4b7ff0e21fe3017b2f283c6fac3ad803c9" +dependencies = [ + "cfg-if", + "crunchy", +] + [[package]] name = "hashbrown" version = "0.12.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" +dependencies = [ + "ahash 0.7.8", +] + +[[package]] +name = "hashbrown" +version = "0.14.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e5274423e17b7c9fc20b6e7e208532f9b19825d82dfd615708b70edd83df41f1" [[package]] name = "hashbrown" @@ -1416,12 +2799,24 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bf151400ff0baff5465007dd2f3e717f3fe502074ca563069ce3a6629d07b289" [[package]] -name = "heck" -version = "0.3.3" +name = "hayagriva" +version = "0.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6d621efb26863f0e9924c6ac577e8275e5e6b77455db64ffa6c65c904e9e132c" +checksum = "1d0d20c98b77b86ce737876b2a1653e2e6abbeee84afbb39d72111091191c97a" dependencies = [ + "biblatex", + "ciborium", + "citationberg", + "indexmap 2.7.0", + "numerals", + "paste", + "serde", + "serde_yaml", + "thiserror 1.0.69", + "unic-langid", "unicode-segmentation", + "unscanny", + "url 2.5.4", ] [[package]] @@ -1450,16 +2845,28 @@ checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70" [[package]] name = "html5ever" -version = "0.26.0" +version = "0.27.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bea68cab48b8459f17cf1c944c67ddc572d272d9f2b274140f223ecb1da4a3b7" +checksum = "c13771afe0e6e846f1e67d038d4cb29998a6779f93c809212e4e9c32efd244d4" dependencies = [ - "log", + "log 0.4.27", "mac", - "markup5ever", + "markup5ever 0.12.1", "proc-macro2", "quote", - "syn 1.0.109", + "syn 2.0.93", +] + +[[package]] +name = "html5ever" +version = "0.29.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3b7410cae13cbc75623c98ac4cbfd1f0bedddf3227afc24f370cf0f50a44a11c" +dependencies = [ + "log 0.4.27", + "mac", + "markup5ever 0.14.1", + "match_token", ] [[package]] @@ -1470,7 +2877,18 @@ checksum = "601cbb57e577e2f5ef5be8e7b83f0f63994f25aa94d673e54a92d5c516d101f1" dependencies = [ "bytes", "fnv", - "itoa 1.0.14", + "itoa", +] + +[[package]] +name = "http" +version = "1.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f4a85d31aea989eead29a3aaf9e1115a180df8282431156e533de47660892565" +dependencies = [ + "bytes", + "fnv", + "itoa", ] [[package]] @@ -1480,7 +2898,30 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7ceab25649e9960c0311ea418d17bee82c0dcec1bd053b5f9a66e265a693bed2" dependencies = [ "bytes", - "http", + "http 0.2.12", + "pin-project-lite", +] + +[[package]] +name = "http-body" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1efedce1fb8e6913f23e0c92de8e62cd5b772a67e7b3946df930a62566c93184" +dependencies = [ + "bytes", + "http 1.3.1", +] + +[[package]] +name = "http-body-util" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b021d93e26becf5dc7e1b75b1bed1fd93124b374ceb73f43d4d4eafec896a64a" +dependencies = [ + "bytes", + "futures-core", + "http 1.3.1", + "http-body 1.0.1", "pin-project-lite", ] @@ -1490,6 +2931,12 @@ version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "21dec9db110f5f872ed9699c3ecf50cf16f423502706ba5c72462e28d3157573" +[[package]] +name = "http-range-header" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "add0ab9360ddbd88cfeb3bd9574a1d85cfdfa14db10b3e21d3700dbc4328758f" + [[package]] name = "httparse" version = "1.9.5" @@ -1502,6 +2949,25 @@ version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "df3b46402a9d5adb4c86a0cf463f42e19994e3ee891101b1841f30a545cb49a9" +[[package]] +name = "hyper" +version = "0.10.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0a0652d9a2609a968c14be1a9ea00bf4b1d64e2e1f53a1b51b6fff3a6e829273" +dependencies = [ + "base64 0.9.3", + "httparse", + "language-tags", + "log 0.3.9", + "mime 0.2.6", + "num_cpus", + "time 0.1.45", + "traitobject", + "typeable", + "unicase 1.4.2", + "url 1.7.2", +] + [[package]] name = "hyper" version = "0.14.32" @@ -1512,12 +2978,12 @@ dependencies = [ "futures-channel", "futures-core", "futures-util", - "h2", - "http", - "http-body", + "h2 0.3.26", + "http 0.2.12", + "http-body 0.4.6", "httparse", "httpdate", - "itoa 1.0.14", + "itoa", "pin-project-lite", "socket2", "tokio", @@ -1526,6 +2992,55 @@ dependencies = [ "want", ] +[[package]] +name = "hyper" +version = "1.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cc2b571658e38e0c01b1fdca3bbbe93c00d3d71693ff2770043f8c29bc7d6f80" +dependencies = [ + "bytes", + "futures-channel", + "futures-util", + "h2 0.4.11", + "http 1.3.1", + "http-body 1.0.1", + "httparse", + "itoa", + "pin-project-lite", + "smallvec", + "tokio", + "want", +] + +[[package]] +name = "hyper-rustls" +version = "0.27.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e3c93eb611681b207e1fe55d5a71ecf91572ec8a6705cdb6857f7d8d5242cf58" +dependencies = [ + "http 1.3.1", + "hyper 1.6.0", + "hyper-util", + "rustls", + "rustls-pki-types", + "tokio", + "tokio-rustls", + "tower-service", + "webpki-roots 1.0.1", +] + +[[package]] +name = "hyper-timeout" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bbb958482e8c7be4bc3cf272a766a2b0bf1a6755e7a6ae777f017a31d11b13b1" +dependencies = [ + "hyper 0.14.32", + "pin-project-lite", + "tokio", + "tokio-io-timeout", +] + [[package]] name = "hyper-tls" version = "0.5.0" @@ -1533,12 +3048,60 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d6183ddfa99b85da61a140bea0efc93fdf56ceaa041b37d553518030827f9905" dependencies = [ "bytes", - "hyper", + "hyper 0.14.32", + "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", + "http-body-util", + "hyper 1.6.0", + "hyper-util", "native-tls", "tokio", "tokio-native-tls", + "tower-service", +] + +[[package]] +name = "hyper-util" +version = "0.1.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc2fdfdbff08affe55bb779f33b053aa1fe5dd5b54c257343c17edfa55711bdb" +dependencies = [ + "base64 0.22.1", + "bytes", + "futures-channel", + "futures-core", + "futures-util", + "http 1.3.1", + "http-body 1.0.1", + "hyper 1.6.0", + "ipnet", + "libc", + "percent-encoding 2.3.1", + "pin-project-lite", + "socket2", + "system-configuration 0.6.1", + "tokio", + "tower-service", + "tracing", + "windows-registry", ] +[[package]] +name = "hypher" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3b24ad5637230df201ab1034d593f1d09bf7f2a9274f2e8897638078579f4265" + [[package]] name = "iana-time-zone" version = "0.1.61" @@ -1550,7 +3113,7 @@ dependencies = [ "iana-time-zone-haiku", "js-sys", "wasm-bindgen", - "windows-core", + "windows-core 0.52.0", ] [[package]] @@ -1564,9 +3127,9 @@ dependencies = [ [[package]] name = "ico" -version = "0.3.0" +version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e3804960be0bb5e4edb1e1ad67afd321a9ecfd875c3e65c099468fd2717d7cae" +checksum = "cc50b891e4acf8fe0e71ef88ec43ad82ee07b3810ad09de10f1d01f072ed4b98" dependencies = [ "byteorder", "png", @@ -1579,11 +3142,60 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "db2fa452206ebee18c4b5c2274dbf1de17008e874b4dc4f0aea9d01ca79e4526" dependencies = [ "displaydoc", - "yoke", + "serde", + "yoke 0.7.5", + "zerofrom", + "zerovec 0.10.4", +] + +[[package]] +name = "icu_collections" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "200072f5d0e3614556f94a9930d5dc3e0662a652823904c3a75dc3b0af7fee47" +dependencies = [ + "displaydoc", + "potential_utf", + "yoke 0.8.0", "zerofrom", - "zerovec", + "zerovec 0.11.2", +] + +[[package]] +name = "icu_locale" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6ae5921528335e91da1b6c695dbf1ec37df5ac13faa3f91e5640be93aa2fbefd" +dependencies = [ + "displaydoc", + "icu_collections 2.0.0", + "icu_locale_core", + "icu_locale_data", + "icu_provider 2.0.0", + "potential_utf", + "tinystr 0.8.1", + "zerovec 0.11.2", +] + +[[package]] +name = "icu_locale_core" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0cde2700ccaed3872079a65fb1a78f6c0a36c91570f28755dda67bc8f7d9f00a" +dependencies = [ + "displaydoc", + "litemap 0.8.0", + "tinystr 0.8.1", + "writeable 0.6.1", + "zerovec 0.11.2", ] +[[package]] +name = "icu_locale_data" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4fdef0c124749d06a743c69e938350816554eb63ac979166590e2b4ee4252765" + [[package]] name = "icu_locid" version = "1.5.0" @@ -1591,10 +3203,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "13acbb8371917fc971be86fc8057c41a64b521c184808a698c02acc242dbf637" dependencies = [ "displaydoc", - "litemap", - "tinystr", - "writeable", - "zerovec", + "litemap 0.7.4", + "tinystr 0.7.6", + "writeable 0.5.5", + "zerovec 0.10.4", ] [[package]] @@ -1606,9 +3218,9 @@ dependencies = [ "displaydoc", "icu_locid", "icu_locid_transform_data", - "icu_provider", - "tinystr", - "zerovec", + "icu_provider 1.5.0", + "tinystr 0.7.6", + "zerovec 0.10.4", ] [[package]] @@ -1624,15 +3236,15 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "19ce3e0da2ec68599d193c93d088142efd7f9c5d6fc9b803774855747dc6a84f" dependencies = [ "displaydoc", - "icu_collections", + "icu_collections 1.5.0", "icu_normalizer_data", "icu_properties", - "icu_provider", + "icu_provider 1.5.0", "smallvec", "utf16_iter", "utf8_iter", "write16", - "zerovec", + "zerovec 0.10.4", ] [[package]] @@ -1648,12 +3260,13 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "93d6020766cfc6302c15dbbc9c8778c37e62c14427cb7f6e601d849e092aeef5" dependencies = [ "displaydoc", - "icu_collections", + "icu_collections 1.5.0", "icu_locid_transform", "icu_properties_data", - "icu_provider", - "tinystr", - "zerovec", + "icu_provider 1.5.0", + "serde", + "tinystr 0.7.6", + "zerovec 0.10.4", ] [[package]] @@ -1671,12 +3284,58 @@ dependencies = [ "displaydoc", "icu_locid", "icu_provider_macros", + "postcard", + "serde", + "stable_deref_trait", + "tinystr 0.7.6", + "writeable 0.5.5", + "yoke 0.7.5", + "zerofrom", + "zerovec 0.10.4", +] + +[[package]] +name = "icu_provider" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "03c80da27b5f4187909049ee2d72f276f0d9f99a42c306bd0131ecfe04d8e5af" +dependencies = [ + "displaydoc", + "icu_locale_core", "stable_deref_trait", - "tinystr", - "writeable", - "yoke", + "tinystr 0.8.1", + "writeable 0.6.1", + "yoke 0.8.0", "zerofrom", - "zerovec", + "zerotrie 0.2.2", + "zerovec 0.11.2", +] + +[[package]] +name = "icu_provider_adapters" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d6324dfd08348a8e0374a447ebd334044d766b1839bb8d5ccf2482a99a77c0bc" +dependencies = [ + "icu_locid", + "icu_locid_transform", + "icu_provider 1.5.0", + "tinystr 0.7.6", + "zerovec 0.10.4", +] + +[[package]] +name = "icu_provider_blob" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c24b98d1365f55d78186c205817631a4acf08d7a45bdf5dc9dcf9c5d54dccf51" +dependencies = [ + "icu_provider 1.5.0", + "postcard", + "serde", + "writeable 0.5.5", + "zerotrie 0.1.3", + "zerovec 0.10.4", ] [[package]] @@ -1690,12 +3349,70 @@ dependencies = [ "syn 2.0.93", ] +[[package]] +name = "icu_segmenter" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a717725612346ffc2d7b42c94b820db6908048f39434504cb130e8b46256b0de" +dependencies = [ + "core_maths", + "displaydoc", + "icu_collections 1.5.0", + "icu_locid", + "icu_provider 1.5.0", + "icu_segmenter_data 1.5.1", + "serde", + "utf8_iter", + "zerovec 0.10.4", +] + +[[package]] +name = "icu_segmenter" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e185fc13b6401c138cf40db12b863b35f5edf31b88192a545857b41aeaf7d3d3" +dependencies = [ + "core_maths", + "displaydoc", + "icu_collections 2.0.0", + "icu_locale", + "icu_locale_core", + "icu_provider 2.0.0", + "icu_segmenter_data 2.0.0", + "potential_utf", + "utf8_iter", + "zerovec 0.11.2", +] + +[[package]] +name = "icu_segmenter_data" +version = "1.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a1e52775179941363cc594e49ce99284d13d6948928d8e72c755f55e98caa1eb" + +[[package]] +name = "icu_segmenter_data" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5360a2fbe97f617c4f8b944356dedb36d423f7da7f13c070995cf89e59f01220" + [[package]] name = "ident_case" version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39" +[[package]] +name = "idna" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "38f09e0f0b1fb55fdee1f17470ad800da77af5186a1a76c026b679358b7e844e" +dependencies = [ + "matches", + "unicode-bidi", + "unicode-normalization", +] + [[package]] name = "idna" version = "1.0.3" @@ -1717,6 +3434,12 @@ dependencies = [ "icu_properties", ] +[[package]] +name = "if_chain" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cb56e1aa765b4b4f3aadfab769793b7087bb03a4ea4920644a6d238e2df5b9ed" + [[package]] name = "ignore" version = "0.4.23" @@ -1725,7 +3448,7 @@ checksum = "6d89fd380afde86567dfba715db065673989d6253f42b88179abd3eae47bda4b" dependencies = [ "crossbeam-deque", "globset", - "log", + "log 0.4.27", "memchr", "regex-automata 0.4.9", "same-file", @@ -1742,18 +3465,37 @@ dependencies = [ "bytemuck", "byteorder", "color_quant", + "exr", + "gif 0.13.2", + "jpeg-decoder", "num-traits", + "png", + "qoi", + "tiff", ] [[package]] -name = "imagesize" -version = "0.12.0" +name = "image" +version = "0.25.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "029d73f573d8e8d63e6d5020011d3255b28c3ba85d6cf870a07184ed23de9284" - -[[package]] -name = "include_dir" -version = "0.7.4" +checksum = "db35664ce6b9810857a38a906215e75a9c879f0696556a39f59c62829710251a" +dependencies = [ + "bytemuck", + "byteorder-lite", + "num-traits", + "png", + "tiff", +] + +[[package]] +name = "imagesize" +version = "0.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "029d73f573d8e8d63e6d5020011d3255b28c3ba85d6cf870a07184ed23de9284" + +[[package]] +name = "include_dir" +version = "0.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "923d117408f1e49d914f1a379a309cffe4f18c05cf4e3d12e613a15fc81bd0dd" dependencies = [ @@ -1776,7 +3518,7 @@ version = "1.9.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bd070e393353796e801d209ad339e89596eb4c8d430d18ede6a1cced8fafbd99" dependencies = [ - "autocfg", + "autocfg 1.4.0", "hashbrown 0.12.3", "serde", ] @@ -1792,23 +3534,26 @@ dependencies = [ "serde", ] +[[package]] +name = "indexmap-nostd" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e04e2fd2b8188ea827b32ef11de88377086d690286ab35747ef7f9bf3ccb590" + [[package]] name = "infer" -version = "0.13.0" +version = "0.19.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f551f8c3a39f68f986517db0d1759de85881894fdc7db798bd2a9df9cb04b7fc" +checksum = "a588916bfdfd92e71cacef98a63d9b1f0d74d6599980d11894290e7ddefffcf7" dependencies = [ "cfb", ] [[package]] -name = "instant" -version = "0.1.13" +name = "interpolator" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e0242819d153cba4b4b05a5a8f2a7e9bbf97b6055b2a002b395c96b5ff3c0222" -dependencies = [ - "cfg-if", -] +checksum = "71dd52191aae121e8611f1e8dc3e324dd0dd1dee1e6dd91d10ee07a3cfb4d9d8" [[package]] name = "ipnet" @@ -1816,6 +3561,51 @@ version = "2.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ddc24109865250148c2e0f3d25d4f0f479571723792d3802153c60922a4fb708" +[[package]] +name = "iri-string" +version = "0.7.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dbc5ebe9c3a1a7a5127f920a418f7585e9e758e911d0466ed004f393b0e380b2" +dependencies = [ + "memchr", + "serde", +] + +[[package]] +name = "iron" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c6d308ca2d884650a8bf9ed2ff4cb13fbb2207b71f64cda11dc9b892067295e8" +dependencies = [ + "hyper 0.10.16", + "log 0.3.9", + "mime_guess 1.8.8", + "modifier", + "num_cpus", + "plugin", + "typemap", + "url 1.7.2", +] + +[[package]] +name = "is-docker" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "928bae27f42bc99b60d9ac7334e3a21d10ad8f1835a4e12ec3ec0464765ed1b3" +dependencies = [ + "once_cell", +] + +[[package]] +name = "is-wsl" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "173609498df190136aa7dea1a91db051746d339e18476eed5ca40521f02d7aa5" +dependencies = [ + "is-docker", + "once_cell", +] + [[package]] name = "is_terminal_polyfill" version = "1.70.1" @@ -1823,10 +3613,22 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7943c866cc5cd64cbc25b2e01621d07fa8eb2a1a23160ee81ce38704e97b8ecf" [[package]] -name = "itoa" -version = "0.4.8" +name = "itertools" +version = "0.12.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b71991ff56294aa922b450139ee08b3bfc70982c6b2c7562771375cf73542dd4" +checksum = "ba291022dbbd398a455acf126c1e341954079855bc60dfdda641363bd6922569" +dependencies = [ + "either", +] + +[[package]] +name = "itertools" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2b192c782037fadd9cfa75548310488aabdbf3d2da73885b31bd0abd03351285" +dependencies = [ + "either", +] [[package]] name = "itoa" @@ -1836,9 +3638,9 @@ 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", @@ -1847,28 +3649,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", + "log 0.4.27", + "thiserror 1.0.69", "walkdir", + "windows-sys 0.45.0", ] [[package]] @@ -1877,11 +3681,20 @@ version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8eaf4bc02d17cbdd7ff4c7438cafcdf7fb9a4613313ad11b4f8fefe7d3fa0130" +[[package]] +name = "jpeg-decoder" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "00810f1d8b74be64b13dbf3db89ac67740615d6c891f0e7b6179326533011a07" +dependencies = [ + "rayon", +] + [[package]] name = "js-sys" -version = "0.3.76" +version = "0.3.77" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6717b6b5b077764fb5966237269cb3c64edddde4b14ce42647430a78ced9e7b7" +checksum = "1cfaf33c695fc6e08064efbc1f72ec937429614f25eef83af942d0e227c3a28f" dependencies = [ "once_cell", "wasm-bindgen", @@ -1889,51 +3702,142 @@ 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", ] +[[package]] +name = "kamadak-exif" +version = "0.5.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ef4fc70d0ab7e5b6bafa30216a6b48705ea964cdfc29c050f2412295eba58077" +dependencies = [ + "mutate_once", +] + +[[package]] +name = "keyboard-types" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b750dcadc39a09dbadd74e118f6dd6598df77fa01df0cfcdc52c28dece74528a" +dependencies = [ + "bitflags 2.9.1", + "serde", + "unicode-segmentation", +] + +[[package]] +name = "kparse" +version = "3.0.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "503149c856ef5f8728156b55609019cf2714a29ebdb2a82dc1a831d2c743f28a" +dependencies = [ + "bytecount", + "memchr", + "nom", + "nom_locate", +] + [[package]] name = "kuchikiki" -version = "0.8.2" +version = "0.8.8-speedreader" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f29e4755b7b995046f510a7520c42b2fed58b77bd94d5a87a8eb43d2fd126da8" +checksum = "02cb977175687f33fa4afa0c95c112b987ea1443e5a51c8f8ff27dc618270cc2" dependencies = [ - "cssparser", - "html5ever", - "indexmap 1.9.3", - "matches", - "selectors", + "cssparser 0.29.6", + "html5ever 0.29.1", + "indexmap 2.7.0", + "selectors 0.24.0", +] + +[[package]] +name = "kurbo" +version = "0.9.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bd85a5776cd9500c2e2059c8c76c3b01528566b7fcbaf8098b55a33fc298849b" +dependencies = [ + "arrayvec", ] +[[package]] +name = "language-tags" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a91d884b6667cd606bb5a69aa0c99ba811a115fc68915e7056ec08a46e93199a" + [[package]] name = "lazy_static" version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" +[[package]] +name = "lebe" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "03087c2bad5e1034e8cace5926dec053fb3790248370865f5117a7d0213354c8" + +[[package]] +name = "libappindicator" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "03589b9607c868cc7ae54c0b2a22c8dc03dd41692d48f2d7df73615c6a95dc0a" +dependencies = [ + "glib", + "gtk", + "gtk-sys", + "libappindicator-sys", + "log 0.4.27", +] + +[[package]] +name = "libappindicator-sys" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6e9ec52138abedcc58dc17a7c6c0c00a2bdb4f3427c7f63fa97fd0d859155caf" +dependencies = [ + "gtk-sys", + "libloading", + "once_cell", +] + [[package]] name = "libc" -version = "0.2.169" +version = "0.2.174" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1171693293099992e19cddea4e8b849964e9846f4acee11b3948bcc337be8776" + +[[package]] +name = "libloading" +version = "0.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b67380fd3b2fbe7527a606e18729d21c6f3951633d0500574c4dc22d2d638b9f" +dependencies = [ + "cfg-if", + "winapi", +] + +[[package]] +name = "libm" +version = "0.2.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b5aba8db14291edd000dfcc4d620c7ebfb122c613afb886ca8803fa4e128a20a" +checksum = "f9fbbcab51052fe104eb5e5d351cf728d30a5be1fe14d9be8a3b097481fb97de" [[package]] name = "libredox" @@ -1941,7 +3845,7 @@ version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c0ff37bd590ca25063e35af745c343cb7a0271906fb7b37e4813e8f79f00268d" dependencies = [ - "bitflags 2.6.0", + "bitflags 2.9.1", "libc", "redox_syscall", ] @@ -1958,11 +3862,67 @@ version = "0.4.14" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "78b3ae25bc7c8c38cec158d1f2757ee79e9b3740fbc7ccf0e59e4b08d793fa89" +[[package]] +name = "linux-raw-sys" +version = "0.9.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cd945864f07fe9f5371a27ad7b52a172b4b499999f1d97574c9fa68373937e12" + +[[package]] +name = "lipsum" +version = "0.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "636860251af8963cc40f6b4baadee105f02e21b28131d76eba8e40ce84ab8064" +dependencies = [ + "rand 0.8.5", + "rand_chacha 0.3.1", +] + [[package]] name = "litemap" version = "0.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4ee93343901ab17bd981295f2cf0026d4ad018c7c31ba84549a4ddbb47a45104" +dependencies = [ + "serde", +] + +[[package]] +name = "litemap" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "241eaef5fd12c88705a01fc1066c48c4b36e0dd4377dcdc7ec3942cea7a69956" + +[[package]] +name = "litrs" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b4ce301924b7887e9d637144fdade93f9dfff9b60981d4ac161db09720d39aa5" + +[[package]] +name = "lnk" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "74c22ceaeab0d65bc44bb98e3fd15bdf7b77ad5035c72a9d30edc9c4425da0bb" +dependencies = [ + "bitflags 1.3.2", + "byteorder", + "log 0.4.27", + "num-derive", + "num-traits", +] + +[[package]] +name = "local-ip-address" +version = "0.5.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "612ed4ea9ce5acfb5d26339302528a5e1e59dfed95e9e11af3c083236ff1d15d" +dependencies = [ + "libc", + "neli", + "thiserror 1.0.69", + "windows-sys 0.48.0", +] [[package]] name = "local-ip-address" @@ -1972,7 +3932,7 @@ checksum = "3669cf5561f8d27e8fc84cc15e58350e70f557d4d65f70e3154e54cd2f8e1782" dependencies = [ "libc", "neli", - "thiserror", + "thiserror 1.0.69", "windows-sys 0.59.0", ] @@ -1982,31 +3942,50 @@ version = "0.4.12" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "07af8b9cdd281b7915f413fa73f29ebd5d55d0d3f0155584dade1ff18cea1b17" dependencies = [ - "autocfg", + "autocfg 1.4.0", "scopeguard", ] [[package]] name = "log" -version = "0.4.22" +version = "0.3.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a7a70ba024b9dc04c27ea2f0c0548feb474ec5c54bba33a7f72f873a39d07b24" +checksum = "e19e8d5c34a3e0e2223db8e060f9e8264aeeb5c5fc64a4ee9965c062211c024b" +dependencies = [ + "log 0.4.27", +] [[package]] -name = "loom" -version = "0.5.6" +name = "log" +version = "0.4.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "13dc2df351e3202783a1fe0d44375f7295ffb4049267b0f3018346dc122a1d94" + +[[package]] +name = "lopdf" +version = "0.32.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ff50ecb28bb86013e935fb6683ab1f6d3a20016f123c76fd4c27470076ac30f5" +checksum = "e775e4ee264e8a87d50a9efef7b67b4aa988cf94e75630859875fc347e6c872b" dependencies = [ - "cfg-if", - "generator", - "scoped-tls", - "serde", - "serde_json", - "tracing", - "tracing-subscriber", + "chrono", + "encoding_rs", + "flate2", + "itoa", + "linked-hash-map", + "log 0.4.27", + "md5", + "nom", + "rayon", + "time 0.3.37", + "weezl", ] +[[package]] +name = "lru-slab" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "112b39cec0b298b6c1999fee3e31427f74f676e4cb9879ed1a121b43661a4154" + [[package]] name = "mac" version = "0.1.1" @@ -2024,18 +4003,43 @@ dependencies = [ [[package]] name = "markup5ever" -version = "0.11.0" +version = "0.12.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a2629bb1404f3d34c2e921f21fd34ba00b206124c81f65c50b43b6aaefeb016" +checksum = "16ce3abbeba692c8b8441d036ef91aea6df8da2c6b6e21c7e14d3c18e526be45" dependencies = [ - "log", - "phf 0.10.1", - "phf_codegen 0.10.0", + "log 0.4.27", + "phf 0.11.2", + "phf_codegen 0.11.3", + "string_cache", + "string_cache_codegen", + "tendril", +] + +[[package]] +name = "markup5ever" +version = "0.14.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c7a7213d12e1864c0f002f52c2923d4556935a43dec5e71355c2760e0f6e7a18" +dependencies = [ + "log 0.4.27", + "phf 0.11.2", + "phf_codegen 0.11.3", "string_cache", "string_cache_codegen", "tendril", ] +[[package]] +name = "match_token" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "88a9689d8d44bf9964484516275f5cd4c9b59457a6940c1d5d0ecbb94510a36b" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.93", +] + [[package]] name = "matchers" version = "0.1.0" @@ -2051,29 +4055,110 @@ version = "0.1.10" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2532096657941c2fea9c289d370a250971c689d4f143798ff67113ec042024a5" +[[package]] +name = "matchit" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0e7465ac9959cc2b1404e8e2367b43684a6d13790fe23056cc8c6c5a6b7bcb94" + +[[package]] +name = "md5" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "490cc448043f947bae3cbee9c203358d62dbee0db12107a74be5c30ccfd09771" + [[package]] name = "memchr" version = "2.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "78ca9ab1a0babb1e7d5695e3530886289c18cf2f87ec19a575a0abdce112e3a3" +[[package]] +name = "memmap2" +version = "0.9.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fd3f7eed9d3848f8b98834af67102b720745c4ec028fcd0aa0239277e7de374f" +dependencies = [ + "libc", +] + [[package]] name = "memoffset" version = "0.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "488016bfae457b036d996092f6cb448677611ce4449e970ceaf42695203f218a" dependencies = [ - "autocfg", + "autocfg 1.4.0", ] [[package]] -name = "mime" -version = "0.3.17" +name = "memvdb" +version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a" +checksum = "17ac0bc5c82cef777196785efd44dccbdc3708672a5f6de90c568f7e2cad4c9e" +dependencies = [ + "anyhow", + "log 0.4.27", + "rayon", + "serde", + "serde_json", + "thiserror 2.0.12", +] [[package]] -name = "miniz_oxide" +name = "mime" +version = "0.2.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ba626b8a6de5da682e1caa06bdb42a335aee5a84db8e5046a3e8ab17ba0a3ae0" +dependencies = [ + "log 0.3.9", +] + +[[package]] +name = "mime" +version = "0.3.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a" + +[[package]] +name = "mime_guess" +version = "1.8.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "216929a5ee4dd316b1702eedf5e74548c123d370f47841ceaac38ca154690ca3" +dependencies = [ + "mime 0.2.6", + "phf 0.7.24", + "phf_codegen 0.7.24", + "unicase 1.4.2", +] + +[[package]] +name = "mime_guess" +version = "2.0.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f7c44f8e672c00fe5308fa235f821cb4198414e1c77935c1ab6948d3fd78550e" +dependencies = [ + "mime 0.3.17", + "unicase 2.8.1", +] + +[[package]] +name = "minimal-lexical" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a" + +[[package]] +name = "miniz_oxide" +version = "0.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b8a240ddb74feaf34a79a7add65a741f3167852fba007066dcac1ca548d89c08" +dependencies = [ + "adler", +] + +[[package]] +name = "miniz_oxide" version = "0.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4ffbe83022cedc1d264172192511ae958937694cd57ce297164951b8b3568394" @@ -2093,6 +4178,71 @@ dependencies = [ "windows-sys 0.52.0", ] +[[package]] +name = "modifier" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "41f5c9112cb662acd3b204077e0de5bc66305fa8df65c8019d5adb10e9ab6e58" + +[[package]] +name = "muda" +version = "0.17.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "58b89bf91c19bf036347f1ab85a81c560f08c0667c8601bece664d860a600988" +dependencies = [ + "crossbeam-channel", + "dpi", + "gtk", + "keyboard-types", + "objc2 0.6.1", + "objc2-app-kit", + "objc2-core-foundation", + "objc2-foundation 0.3.1", + "once_cell", + "png", + "serde", + "thiserror 2.0.12", + "windows-sys 0.59.0", +] + +[[package]] +name = "multipart" +version = "0.18.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "00dec633863867f29cb39df64a397cdf4a6354708ddd7759f70c7fb51c5f9182" +dependencies = [ + "buf_redux", + "httparse", + "hyper 0.10.16", + "iron", + "log 0.4.27", + "mime 0.3.17", + "mime_guess 2.0.5", + "nickel", + "quick-error", + "rand 0.8.5", + "safemem", + "tempfile", + "tiny_http", + "twoway", +] + +[[package]] +name = "mustache" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "51956ef1c5d20a1384524d91e616fb44dfc7d8f249bf696d49c97dd3289ecab5" +dependencies = [ + "log 0.3.9", + "serde", +] + +[[package]] +name = "mutate_once" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "16cf681a23b4d0a43fc35024c176437f9dcd818db34e0f42ab456a0ee5ad497b" + [[package]] name = "native-tls" version = "0.2.12" @@ -2100,7 +4250,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a8614eb2c83d59d1c8cc974dd3f920198647674a0a035e1af1fa58707e317466" dependencies = [ "libc", - "log", + "log 0.4.27", "openssl", "openssl-probe", "openssl-sys", @@ -2112,15 +4262,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.9.1", "jni-sys", + "log 0.4.27", "ndk-sys", "num_enum", - "thiserror", + "raw-window-handle", + "thiserror 1.0.69", ] [[package]] @@ -2131,9 +4283,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", ] @@ -2146,7 +4298,7 @@ checksum = "1100229e06604150b3becd61a4965d5c70f3be1759544ea7274166f4be41ef43" dependencies = [ "byteorder", "libc", - "log", + "log 0.4.27", "neli-proc-macros", ] @@ -2169,12 +4321,67 @@ version = "1.0.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "650eef8c711430f1a879fdd01d4745a7deea475becfb90269c06775983bbf086" +[[package]] +name = "nickel" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e5061a832728db2dacb61cefe0ce303b58f85764ec680e71d9138229640a46d9" +dependencies = [ + "groupable", + "hyper 0.10.16", + "lazy_static", + "log 0.3.9", + "modifier", + "mustache", + "plugin", + "regex", + "serde", + "serde_json", + "time 0.1.45", + "typemap", + "url 1.7.2", +] + +[[package]] +name = "nix" +version = "0.30.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "74523f3a35e05aba87a1d978330aef40f67b0304ac79c1c00b294c9830543db6" +dependencies = [ + "bitflags 2.9.1", + "cfg-if", + "cfg_aliases", + "libc", + "memoffset", +] + [[package]] name = "nodrop" version = "0.1.14" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "72ef4a56884ca558e5ddb05a1d1e7e1bfd9a68d9ed024c21704cc98872dae1bb" +[[package]] +name = "nom" +version = "7.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d273983c5a657a70a3e8f2a01329822f3b8c8172b73826411a55751e404a0a4a" +dependencies = [ + "memchr", + "minimal-lexical", +] + +[[package]] +name = "nom_locate" +version = "4.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e3c83c053b0713da60c5b8de47fe8e494fe3ece5267b2f23090a07a053ba8f3" +dependencies = [ + "bytecount", + "memchr", + "nom", +] + [[package]] name = "normpath" version = "1.3.0" @@ -2203,19 +4410,49 @@ dependencies = [ "winapi", ] +[[package]] +name = "num-bigint" +version = "0.4.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a5e44f723f1133c9deac646763579fdb3ac745e418f2a7af9cd0c431da1f20b9" +dependencies = [ + "num-integer", + "num-traits", +] + [[package]] name = "num-conv" version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "51d515d32fb182ee37cda2ccdcb92950d6a3c2893aa280e540671c2cd0f3b1d9" +[[package]] +name = "num-derive" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "876a53fff98e03a936a674b29568b0e605f06b29372c2489ff4de23f1949743d" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "num-integer" +version = "0.1.46" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7969661fd2958a5cb096e56c8e1ad0444ac2bbcd0061bd28660485a44879858f" +dependencies = [ + "num-traits", +] + [[package]] name = "num-traits" version = "0.2.19" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841" dependencies = [ - "autocfg", + "autocfg 1.4.0", ] [[package]] @@ -2230,25 +4467,32 @@ dependencies = [ [[package]] name = "num_enum" -version = "0.5.11" +version = "0.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1f646caf906c20226733ed5b1374287eb97e3c2a5c227ce668c1f2ce20ae57c9" +checksum = "a973b4e44ce6cad84ce69d797acf9a044532e4184c4f267913d1b546a0727b7a" dependencies = [ "num_enum_derive", + "rustversion", ] [[package]] name = "num_enum_derive" -version = "0.5.11" +version = "0.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dcbff9bc912032c62bf65ef1d5aea88983b420f4f839db1e9b0c281a25c9c799" +checksum = "77e878c846a8abae00dd069496dbe8751b16ac1c3d6bd2a7283a938e8228f90d" dependencies = [ - "proc-macro-crate", + "proc-macro-crate 3.3.0", "proc-macro2", "quote", - "syn 1.0.109", + "syn 2.0.93", ] +[[package]] +name = "numerals" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e25be21376a772d15f97ae789845340a9651d3c4246ff5ebb6a2b35f9c37bd31" + [[package]] name = "objc" version = "0.2.7" @@ -2256,25 +4500,220 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "915b1b472bc21c53464d6c8461c9d3af805ba1ef837e1cac254428f4a77177b1" dependencies = [ "malloc_buf", - "objc_exception", ] [[package]] -name = "objc_exception" -version = "0.1.2" +name = "objc-sys" +version = "0.3.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ad970fb455818ad6cba4c122ad012fae53ae8b4795f86378bce65e4f6bab2ca4" +checksum = "cdb91bdd390c7ce1a8607f35f3ca7151b65afc0ff5ff3b34fa350f7d7c7e4310" + +[[package]] +name = "objc2" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "46a785d4eeff09c14c487497c162e92766fbb3e4059a71840cecc03d9a50b804" dependencies = [ - "cc", + "objc-sys", + "objc2-encode", +] + +[[package]] +name = "objc2" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "88c6597e14493ab2e44ce58f2fdecf095a51f12ca57bec060a11c57332520551" +dependencies = [ + "objc2-encode", + "objc2-exception-helper", +] + +[[package]] +name = "objc2-app-kit" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e6f29f568bec459b0ddff777cec4fe3fd8666d82d5a40ebd0ff7e66134f89bcc" +dependencies = [ + "bitflags 2.9.1", + "block2 0.6.1", + "libc", + "objc2 0.6.1", + "objc2-cloud-kit", + "objc2-core-data", + "objc2-core-foundation", + "objc2-core-graphics", + "objc2-core-image", + "objc2-foundation 0.3.1", + "objc2-quartz-core 0.3.1", +] + +[[package]] +name = "objc2-cloud-kit" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "17614fdcd9b411e6ff1117dfb1d0150f908ba83a7df81b1f118005fe0a8ea15d" +dependencies = [ + "bitflags 2.9.1", + "objc2 0.6.1", + "objc2-foundation 0.3.1", ] [[package]] -name = "objc_id" +name = "objc2-core-data" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "291fbbf7d29287518e8686417cf7239c74700fd4b607623140a7d4a3c834329d" +dependencies = [ + "bitflags 2.9.1", + "objc2 0.6.1", + "objc2-foundation 0.3.1", +] + +[[package]] +name = "objc2-core-foundation" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1c10c2894a6fed806ade6027bcd50662746363a9589d3ec9d9bef30a4e4bc166" +dependencies = [ + "bitflags 2.9.1", + "dispatch2 0.3.0", + "objc2 0.6.1", +] + +[[package]] +name = "objc2-core-graphics" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "989c6c68c13021b5c2d6b71456ebb0f9dc78d752e86a98da7c716f4f9470f5a4" +dependencies = [ + "bitflags 2.9.1", + "dispatch2 0.3.0", + "objc2 0.6.1", + "objc2-core-foundation", + "objc2-io-surface", +] + +[[package]] +name = "objc2-core-image" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "79b3dc0cc4386b6ccf21c157591b34a7f44c8e75b064f85502901ab2188c007e" +dependencies = [ + "objc2 0.6.1", + "objc2-foundation 0.3.1", +] + +[[package]] +name = "objc2-encode" +version = "4.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ef25abbcd74fb2609453eb695bd2f860d389e457f67dc17cafc8b8cbc89d0c33" + +[[package]] +name = "objc2-exception-helper" version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c92d4ddb4bd7b50d730c215ff871754d0da6b2178849f8a2a2ab69712d0c073b" +checksum = "c7a1c5fbb72d7735b076bb47b578523aedc40f3c439bea6dfd595c089d79d98a" dependencies = [ - "objc", + "cc", +] + +[[package]] +name = "objc2-foundation" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0ee638a5da3799329310ad4cfa62fbf045d5f56e3ef5ba4149e7452dcf89d5a8" +dependencies = [ + "bitflags 2.9.1", + "block2 0.5.1", + "libc", + "objc2 0.5.2", +] + +[[package]] +name = "objc2-foundation" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "900831247d2fe1a09a683278e5384cfb8c80c79fe6b166f9d14bfdde0ea1b03c" +dependencies = [ + "bitflags 2.9.1", + "block2 0.6.1", + "libc", + "objc2 0.6.1", + "objc2-core-foundation", +] + +[[package]] +name = "objc2-io-surface" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7282e9ac92529fa3457ce90ebb15f4ecbc383e8338060960760fa2cf75420c3c" +dependencies = [ + "bitflags 2.9.1", + "objc2 0.6.1", + "objc2-core-foundation", +] + +[[package]] +name = "objc2-metal" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dd0cba1276f6023976a406a14ffa85e1fdd19df6b0f737b063b95f6c8c7aadd6" +dependencies = [ + "bitflags 2.9.1", + "block2 0.5.1", + "objc2 0.5.2", + "objc2-foundation 0.2.2", +] + +[[package]] +name = "objc2-quartz-core" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e42bee7bff906b14b167da2bac5efe6b6a07e6f7c0a21a7308d40c960242dc7a" +dependencies = [ + "bitflags 2.9.1", + "block2 0.5.1", + "objc2 0.5.2", + "objc2-foundation 0.2.2", + "objc2-metal", +] + +[[package]] +name = "objc2-quartz-core" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "90ffb6a0cd5f182dc964334388560b12a57f7b74b3e2dec5e2722aa2dfb2ccd5" +dependencies = [ + "bitflags 2.9.1", + "objc2 0.6.1", + "objc2-foundation 0.3.1", +] + +[[package]] +name = "objc2-ui-kit" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "25b1312ad7bc8a0e92adae17aa10f90aae1fb618832f9b993b022b591027daed" +dependencies = [ + "bitflags 2.9.1", + "objc2 0.6.1", + "objc2-core-foundation", + "objc2-foundation 0.3.1", +] + +[[package]] +name = "objc2-web-kit" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "91672909de8b1ce1c2252e95bbee8c1649c9ad9d14b9248b3d7b4c47903c47ad" +dependencies = [ + "bitflags 2.9.1", + "block2 0.6.1", + "objc2 0.6.1", + "objc2-app-kit", + "objc2-core-foundation", + "objc2-foundation 0.3.1", ] [[package]] @@ -2286,19 +4725,36 @@ dependencies = [ "memchr", ] +[[package]] +name = "ollama-rs" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a0bd0e2c30868e72ffca8143873c6c1e288b2efda9d3950e9ae0d0b4039c49c3" +dependencies = [ + "async-stream", + "log 0.4.27", + "reqwest 0.12.20", + "schemars", + "serde", + "serde_json", + "static_assertions", + "thiserror 2.0.12", + "url 2.5.4", +] + [[package]] name = "once_cell" -version = "1.20.2" +version = "1.21.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1261fe7e33c73b354eab43b1273a57c8f967d0391e80353e51f764ac02cf6775" +checksum = "42f5e15c9953c5e4ccceeb2e7382a716482c34515315f7b03532b8b4e8393d2d" [[package]] name = "onig" -version = "6.4.0" +version = "6.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8c4b31c8722ad9171c6d77d3557db078cab2bd50afcc9d09c8b315c59df8ca4f" +checksum = "336b9c63443aceef14bea841b899035ae3abe89b7c486aaf4c5bd8aafedac3f0" dependencies = [ - "bitflags 1.3.2", + "bitflags 2.9.1", "libc", "once_cell", "onig_sys", @@ -2306,9 +4762,9 @@ dependencies = [ [[package]] name = "onig_sys" -version = "69.8.1" +version = "69.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7b829e3d7e9cc74c7e315ee8edb185bf4190da5acde74afd7fc59c35b1f086e7" +checksum = "c7f86c6eef3d6df15f23bcfb6af487cbd2fed4e5581d58d5bf1f5f8b7f6727dc" dependencies = [ "cc", "pkg-config", @@ -2316,12 +4772,14 @@ dependencies = [ [[package]] name = "open" -version = "3.2.0" +version = "5.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2078c0039e6a54a0c42c28faa984e115fb4c2d5bf2208f77d1961002df8576f8" +checksum = "e2483562e62ea94312f3576a7aca397306df7990b8d89033e18766744377ef95" dependencies = [ + "dunce", + "is-wsl", + "libc", "pathdiff", - "windows-sys 0.42.0", ] [[package]] @@ -2341,9 +4799,9 @@ version = "0.10.68" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6174bc48f102d208783c2c84bf931bb75927a617866870de8a4ea85597f871f5" dependencies = [ - "bitflags 2.6.0", + "bitflags 2.9.1", "cfg-if", - "foreign-types", + "foreign-types 0.3.2", "libc", "once_cell", "openssl-macros", @@ -2386,29 +4844,84 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "04744f49eae99ab78e0d5c0b603ab218f515ea8cfe5a456d7629ad883a3b6e7d" [[package]] -name = "os_info" -version = "3.9.1" +name = "ordered-multimap" +version = "0.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eb6651f4be5e39563c4fe5cc8326349eb99a25d805a3493f791d5bfd0269e430" +checksum = "49203cdcae0030493bad186b28da2fa25645fa276a51b6fec8010d281e02ef79" dependencies = [ - "log", - "serde", - "windows-sys 0.52.0", + "dlv-list", + "hashbrown 0.14.5", ] [[package]] -name = "overload" +name = "ordered-stream" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9aa2b01e1d916879f73a53d01d1d6cee68adbb31d6d9177a8cfce093cced1d50" +dependencies = [ + "futures-core", + "pin-project-lite", +] + +[[package]] +name = "os_info" +version = "3.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d0e1ac5fde8d43c34139135df8ea9ee9465394b2d8d20f032d38998f64afffc3" +dependencies = [ + "log 0.4.27", + "plist", + "serde", + "windows-sys 0.52.0", +] + +[[package]] +name = "os_pipe" +version = "1.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "db335f4760b14ead6290116f2427bf33a14d4f0617d49f78a246de10c1831224" +dependencies = [ + "libc", + "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 = "palette" +version = "0.7.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4cbf71184cc5ecc2e4e1baccdb21026c20e5fc3dcf63028a086131b3ab00b6e6" +dependencies = [ + "approx", + "fast-srgb8", + "libm", + "palette_derive", +] + +[[package]] +name = "palette_derive" +version = "0.7.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f5030daf005bface118c096f510ffb781fc28f9ab6a32ab224d8631be6851d30" +dependencies = [ + "by_address", + "proc-macro2", + "quote", + "syn 2.0.93", +] + [[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", @@ -2417,16 +4930,22 @@ 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 = "parking" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f38d5652c16fde515bb1ecef450ab0f6a219d619a7274976324d5e377f7dceba" + [[package]] name = "parking_lot" version = "0.12.3" @@ -2450,27 +4969,68 @@ dependencies = [ "windows-targets 0.52.6", ] +[[package]] +name = "paste" +version = "1.0.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "57c0d7b74b563b49d38dae00a0c37d4d6de9b432382b2892f0574ddcae73fd0a" + [[package]] name = "pathdiff" version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "df94ce210e5bc13cb6651479fa48d14f601d9858cfe0467f43ae157023b938d3" +[[package]] +name = "pdf-writer" +version = "0.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "24e9127455063c816e661caac9ecd9043ad2871f55be93014e6838a8ced2332b" +dependencies = [ + "bitflags 1.3.2", + "itoa", + "memchr", + "ryu", +] + +[[package]] +name = "percent-encoding" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "31010dd2e1ac33d5b46a5b413495239882813e0369f8ed8a5e266f173602f831" + [[package]] name = "percent-encoding" version = "2.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e" +[[package]] +name = "petgraph" +version = "0.6.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b4c5cc86750666a3ed20bdaf5ca2a0344f9c67674cae0515bec2da16fbaa47db" +dependencies = [ + "fixedbitset", + "indexmap 2.7.0", +] + +[[package]] +name = "phf" +version = "0.7.24" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b3da44b85f8e8dfaec21adae67f95d93244b2ecf6ad2a692320598dcc8e6dd18" +dependencies = [ + "phf_shared 0.7.24", +] + [[package]] name = "phf" version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3dfb61232e34fcb633f43d12c58f83c1df82962dcdfa565a4e866ffc17dafe12" dependencies = [ - "phf_macros 0.8.0", "phf_shared 0.8.0", - "proc-macro-hack", ] [[package]] @@ -2479,7 +5039,9 @@ version = "0.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fabbf1ead8a5bcbc20f5f8b939ee3f5b0f6f281b6ad3468b84656b658b455259" dependencies = [ + "phf_macros 0.10.0", "phf_shared 0.10.0", + "proc-macro-hack", ] [[package]] @@ -2492,6 +5054,16 @@ dependencies = [ "phf_shared 0.11.2", ] +[[package]] +name = "phf_codegen" +version = "0.7.24" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b03e85129e324ad4166b06b2c7491ae27fe3ec353af72e72cd1654c7225d517e" +dependencies = [ + "phf_generator 0.7.24", + "phf_shared 0.7.24", +] + [[package]] name = "phf_codegen" version = "0.8.0" @@ -2512,6 +5084,26 @@ dependencies = [ "phf_shared 0.10.0", ] +[[package]] +name = "phf_codegen" +version = "0.11.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aef8048c789fa5e851558d709946d6d79a8ff88c0440c587967f8e94bfb1216a" +dependencies = [ + "phf_generator 0.11.2", + "phf_shared 0.11.2", +] + +[[package]] +name = "phf_generator" +version = "0.7.24" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09364cc93c159b8b06b1f4dd8a4398984503483891b0c26b867cf431fb132662" +dependencies = [ + "phf_shared 0.7.24", + "rand 0.6.5", +] + [[package]] name = "phf_generator" version = "0.8.0" @@ -2544,12 +5136,12 @@ dependencies = [ [[package]] name = "phf_macros" -version = "0.8.0" +version = "0.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f6fde18ff429ffc8fe78e2bf7f8b7a5a5a6e2a8b58bc5a9ac69198bbda9189c" +checksum = "58fdf3184dd560f160dd73922bea2d5cd6e8f064bf4b13110abd81b03697b4e0" dependencies = [ - "phf_generator 0.8.0", - "phf_shared 0.8.0", + "phf_generator 0.10.0", + "phf_shared 0.10.0", "proc-macro-hack", "proc-macro2", "quote", @@ -2569,13 +5161,23 @@ dependencies = [ "syn 2.0.93", ] +[[package]] +name = "phf_shared" +version = "0.7.24" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "234f71a15de2288bcb7e3b6515828d22af7ec8598ee6d24c3b526fa0a80b67a0" +dependencies = [ + "siphasher 0.2.3", + "unicase 1.4.2", +] + [[package]] name = "phf_shared" version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c00cf8b9eafe68dde5e9eaa2cef8ee84a9336a47d566ec55ca16589633b65af7" dependencies = [ - "siphasher", + "siphasher 0.3.11", ] [[package]] @@ -2584,7 +5186,7 @@ version = "0.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b6796ad771acdc0123d2a88dc428b5e38ef24456743ddb1744ed628f9815c096" dependencies = [ - "siphasher", + "siphasher 0.3.11", ] [[package]] @@ -2593,7 +5195,33 @@ version = "0.11.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "90fcb95eef784c2ac79119d1dd819e162b5da872ce6f3c3abe1e8ca1c082f72b" dependencies = [ - "siphasher", + "siphasher 0.3.11", +] + +[[package]] +name = "pico-args" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5be167a7af36ee22fe3115051bc51f6e6c7054c9348e28deb4f49bd6f705a315" + +[[package]] +name = "pin-project" +version = "1.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "677f1add503faace112b9f1373e43e9e054bfdd22ff1a63c1bc485eaec6a6a8a" +dependencies = [ + "pin-project-internal", +] + +[[package]] +name = "pin-project-internal" +version = "1.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6e918e4ff8c4549eb882f14b3a4bc8c8bc93de829416eacf579f1207a8fbf861" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.93", ] [[package]] @@ -2616,15 +5244,24 @@ checksum = "953ec861398dccce10c670dfeaf3ec4911ca479e9c02154b3a215178c5f566f2" [[package]] name = "plist" -version = "1.7.0" +version = "1.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "42cf17e9a1800f5f396bc67d193dc9411b59012a5876445ef450d449881e1016" +checksum = "3d77244ce2d584cd84f6a15f86195b8c9b2a0dfbfd817c09e0464244091a58ed" dependencies = [ "base64 0.22.1", "indexmap 2.7.0", - "quick-xml", + "quick-xml 0.37.5", "serde", - "time", + "time 0.3.37", +] + +[[package]] +name = "plugin" +version = "0.2.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1a6a0dc3910bc8db877ffed8e457763b317cf880df4ae19109b9f77d277cf6e0" +dependencies = [ + "typemap", ] [[package]] @@ -2637,7 +5274,44 @@ dependencies = [ "crc32fast", "fdeflate", "flate2", - "miniz_oxide", + "miniz_oxide 0.8.2", +] + +[[package]] +name = "portable-atomic" +version = "1.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f84267b20a16ea918e43c6a88433c2d54fa145c92a811b5b047ccbe153674483" + +[[package]] +name = "portable-atomic-util" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d8a2f0d8d040d7848a709caf78912debcc3f33ee4b3cac47d73d1e1069e83507" +dependencies = [ + "portable-atomic", +] + +[[package]] +name = "postcard" +version = "1.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "170a2601f67cc9dba8edd8c4870b15f71a6a2dc196daec8c83f72b59dff628a8" +dependencies = [ + "cobs", + "embedded-io 0.4.0", + "embedded-io 0.6.1", + "serde", +] + +[[package]] +name = "potential_utf" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e5a7c30837279ca13e7c867e9e40053bc68740f988cb07f7ca6df43cc734b585" +dependencies = [ + "serde", + "zerovec 0.11.2", ] [[package]] @@ -2652,7 +5326,7 @@ version = "0.2.20" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "77957b295656769bb8ad2b6a6b09d897d94f05c41b069aede1fcdaa675eaea04" dependencies = [ - "zerocopy", + "zerocopy 0.7.35", ] [[package]] @@ -2666,10 +5340,20 @@ name = "prefstore" version = "0.8.0" source = "git+https://github.com/visnkmr/prefstore.git#ce001108805d7cba4a63839b338ffc6fdd15cf4b" dependencies = [ - "dirs", + "dirs 5.0.1", "glob", ] +[[package]] +name = "prettyplease" +version = "0.2.25" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "64d1ec885c64d0457d564db4ec299b2dae3f9c02808b8ad9c3a089c591b18033" +dependencies = [ + "proc-macro2", + "syn 2.0.93", +] + [[package]] name = "proc-macro-crate" version = "1.3.1" @@ -2680,6 +5364,24 @@ dependencies = [ "toml_edit 0.19.15", ] +[[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.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "edce586971a4dfaa28950c6f18ed55e0406c1ab88bbce2c6f6293a7aaba73d35" +dependencies = [ + "toml_edit 0.22.24", +] + [[package]] name = "proc-macro-error" version = "1.0.4" @@ -2690,7 +5392,7 @@ dependencies = [ "proc-macro2", "quote", "syn 1.0.109", - "version_check", + "version_check 0.9.5", ] [[package]] @@ -2701,7 +5403,7 @@ checksum = "a1be40180e52ecc98ad80b184934baf3d0d29f979574e439af5a55274b35f869" dependencies = [ "proc-macro2", "quote", - "version_check", + "version_check 0.9.5", ] [[package]] @@ -2710,6 +5412,17 @@ version = "0.5.20+deprecated" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "dc375e1527247fe1a97d8b7156678dfe7c1af2fc075c9a4db3690ecd2a148068" +[[package]] +name = "proc-macro-utils" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f59e109e2f795a5070e69578c4dc101068139f74616778025ae1011d4cd41a8" +dependencies = [ + "proc-macro2", + "quote", + "smallvec", +] + [[package]] name = "proc-macro2" version = "1.0.92" @@ -2720,1395 +5433,3502 @@ dependencies = [ ] [[package]] -name = "quick-xml" -version = "0.32.0" +name = "prost" +version = "0.12.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d3a6e5838b60e0e8fa7a43f22ade549a37d61f8bdbe636d0d7816191de969c2" +checksum = "deb1435c188b76130da55f17a466d252ff7b1418b2ad3e037d127b94e3411f29" dependencies = [ - "memchr", + "bytes", + "prost-derive", ] [[package]] -name = "quote" -version = "1.0.38" +name = "prost-derive" +version = "0.12.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0e4dccaaaf89514f546c693ddc140f729f958c247918a13380cccc6078391acc" +checksum = "81bddcdb20abf9501610992b6759a4c888aef7d1a7247ef75e2404275ac24af1" dependencies = [ + "anyhow", + "itertools 0.12.1", "proc-macro2", + "quote", + "syn 2.0.93", ] [[package]] -name = "rand" -version = "0.7.3" +name = "prost-types" +version = "0.12.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6a6b1679d49b24bbfe0c803429aa1874472f50d9b363131f0e89fc356b544d03" +checksum = "9091c90b0a32608e984ff2fa4091273cbdd755d54935c51d520887f4a1dbd5b0" dependencies = [ - "getrandom 0.1.16", - "libc", - "rand_chacha 0.2.2", - "rand_core 0.5.1", - "rand_hc", - "rand_pcg", + "prost", ] [[package]] -name = "rand" -version = "0.8.5" +name = "psl-types" +version = "2.0.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" -dependencies = [ - "libc", - "rand_chacha 0.3.1", - "rand_core 0.6.4", -] +checksum = "33cb294fe86a74cbcf50d4445b37da762029549ebeea341421c7c70370f86cac" [[package]] -name = "rand_chacha" -version = "0.2.2" +name = "psm" +version = "0.1.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f4c8ed856279c9737206bf725bf36935d8666ead7aa69b52be55af369d193402" +checksum = "6e944464ec8536cd1beb0bbfd96987eb5e3b72f2ecdafdc5c769a37f1fa2ae1f" dependencies = [ - "ppv-lite86", - "rand_core 0.5.1", + "cc", ] [[package]] -name = "rand_chacha" -version = "0.3.1" +name = "ptr_meta" +version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" +checksum = "0738ccf7ea06b608c10564b31debd4f5bc5e197fc8bfe088f68ae5ce81e7a4f1" dependencies = [ - "ppv-lite86", - "rand_core 0.6.4", + "ptr_meta_derive", ] [[package]] -name = "rand_core" -version = "0.5.1" +name = "ptr_meta_derive" +version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "90bde5296fc891b0cef12a6d03ddccc162ce7b2aff54160af9338f8d40df6d19" +checksum = "16b845dbfca988fa33db069c0e230574d15a3088f147a87b64c7589eb662c9ac" dependencies = [ - "getrandom 0.1.16", + "proc-macro2", + "quote", + "syn 1.0.109", ] [[package]] -name = "rand_core" -version = "0.6.4" +name = "publicsuffix" +version = "2.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" +checksum = "6f42ea446cab60335f76979ec15e12619a2165b5ae2c12166bef27d283a9fadf" dependencies = [ - "getrandom 0.2.15", + "idna 1.0.3", + "psl-types", ] [[package]] -name = "rand_hc" -version = "0.2.0" +name = "pulldown-cmark" +version = "0.11.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ca3129af7b92a17112d59ad498c6f81eaf463253766b90396d39ea7a39d6613c" +checksum = "679341d22c78c6c649893cbd6c3278dcbe9fc4faa62fea3a9296ae2b50c14625" dependencies = [ - "rand_core 0.5.1", + "bitflags 2.9.1", + "getopts", + "memchr", + "pulldown-cmark-escape", + "unicase 2.8.1", ] [[package]] -name = "rand_pcg" -version = "0.2.1" +name = "pulldown-cmark-escape" +version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "16abd0c1b639e9eb4d7c50c0b8100b0d0f849be2349829c740fe8e6eb4816429" -dependencies = [ - "rand_core 0.5.1", -] +checksum = "007d8adb5ddab6f8e3f491ac63566a7d5002cc7ed73901f72057943fa71ae1ae" [[package]] -name = "raw-window-handle" -version = "0.5.2" +name = "qcms" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f2ff9a1f06a88b01621b7ae906ef0211290d1c8a168a15542486a8f61c0833b9" +checksum = "edecfcd5d755a5e5d98e24cf43113e7cdaec5a070edd0f6b250c03a573da30fa" [[package]] -name = "rayon" -version = "1.10.0" +name = "qoi" +version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b418a60154510ca1a002a752ca9714984e21e4241e804d32555251faf8b78ffa" +checksum = "7f6d64c71eb498fe9eae14ce4ec935c555749aef511cca85b5568910d6e48001" dependencies = [ - "either", - "rayon-core", + "bytemuck", ] [[package]] -name = "rayon-core" -version = "1.12.1" +name = "quick-error" +version = "1.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1465873a3dfdaa8ae7cb14b4383657caab0b3e8a0aa9ae8e04b044854c8dfce2" -dependencies = [ - "crossbeam-deque", - "crossbeam-utils", -] +checksum = "a1d01941d82fa2ab50be1e79e6714289dd7cde78eba4c074bc5a4374f650dfe0" [[package]] -name = "redox_syscall" -version = "0.5.8" +name = "quick-xml" +version = "0.31.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "03a862b389f93e68874fbf580b9de08dd02facb9a788ebadaf4a3fd33cf58834" +checksum = "1004a344b30a54e2ee58d66a71b32d2db2feb0a31f9a2d302bf0536f15de2a33" dependencies = [ - "bitflags 2.6.0", + "encoding_rs", + "memchr", + "serde", ] [[package]] -name = "redox_users" -version = "0.4.6" +name = "quick-xml" +version = "0.37.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ba009ff324d1fc1b900bd1fdb31564febe58a8ccc8a6fdbb93b543d33b13ca43" +checksum = "331e97a1af0bf59823e6eadffe373d7b27f485be8748f71471c662c1f269b7fb" dependencies = [ - "getrandom 0.2.15", - "libredox", - "thiserror", + "memchr", ] [[package]] -name = "regex" -version = "1.11.1" +name = "quinn" +version = "0.11.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b544ef1b4eac5dc2db33ea63606ae9ffcfac26c1416a2806ae0bf5f56b201191" +checksum = "626214629cda6781b6dc1d316ba307189c85ba657213ce642d9c77670f8202c8" dependencies = [ - "aho-corasick", - "memchr", - "regex-automata 0.4.9", - "regex-syntax 0.8.5", + "bytes", + "cfg_aliases", + "pin-project-lite", + "quinn-proto", + "quinn-udp", + "rustc-hash 2.1.1", + "rustls", + "socket2", + "thiserror 2.0.12", + "tokio", + "tracing", + "web-time", ] [[package]] -name = "regex-automata" -version = "0.1.10" +name = "quinn-proto" +version = "0.11.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6c230d73fb8d8c1b9c0b3135c5142a8acee3a0558fb8db5cf1cb65f8d7862132" +checksum = "49df843a9161c85bb8aae55f101bc0bac8bcafd637a620d9122fd7e0b2f7422e" dependencies = [ - "regex-syntax 0.6.29", + "bytes", + "getrandom 0.3.3", + "lru-slab", + "rand 0.9.1", + "ring", + "rustc-hash 2.1.1", + "rustls", + "rustls-pki-types", + "slab", + "thiserror 2.0.12", + "tinyvec", + "tracing", + "web-time", ] [[package]] -name = "regex-automata" -version = "0.4.9" +name = "quinn-udp" +version = "0.5.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "809e8dc61f6de73b46c85f4c96486310fe304c434cfa43669d7b40f711150908" +checksum = "fcebb1209ee276352ef14ff8732e24cc2b02bbac986cd74a4c81bcb2f9881970" dependencies = [ - "aho-corasick", - "memchr", - "regex-syntax 0.8.5", + "cfg_aliases", + "libc", + "once_cell", + "socket2", + "tracing", + "windows-sys 0.59.0", ] [[package]] -name = "regex-syntax" -version = "0.6.29" +name = "quote" +version = "1.0.38" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f162c6dd7b008981e4d40210aca20b4bd0f9b60ca9271061b07f78537722f2e1" +checksum = "0e4dccaaaf89514f546c693ddc140f729f958c247918a13380cccc6078391acc" +dependencies = [ + "proc-macro2", +] [[package]] -name = "regex-syntax" -version = "0.8.5" +name = "quote-use" +version = "0.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2b15c43186be67a4fd63bee50d0303afffcef381492ebe2c5d87f324e1b8815c" +checksum = "a7b5abe3fe82fdeeb93f44d66a7b444dedf2e4827defb0a8e69c437b2de2ef94" +dependencies = [ + "quote", + "quote-use-macros", + "syn 2.0.93", +] [[package]] -name = "reqwest" -version = "0.11.27" +name = "quote-use-macros" +version = "0.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dd67538700a17451e7cba03ac727fb961abb7607553461627b97de0b89cf4a62" +checksum = "97ea44c7e20f16017a76a245bb42188517e13d16dcb1aa18044bc406cdc3f4af" dependencies = [ - "base64 0.21.7", - "bytes", - "encoding_rs", - "futures-core", - "futures-util", - "h2", - "http", - "http-body", - "hyper", - "hyper-tls", - "ipnet", - "js-sys", - "log", - "mime", - "native-tls", - "once_cell", - "percent-encoding", - "pin-project-lite", - "rustls-pemfile", - "serde", - "serde_json", - "serde_urlencoded", - "sync_wrapper", - "system-configuration", - "tokio", - "tokio-native-tls", - "tower-service", - "url", - "wasm-bindgen", - "wasm-bindgen-futures", - "web-sys", - "winreg 0.50.0", + "derive-where", + "proc-macro2", + "quote", + "syn 2.0.93", ] [[package]] -name = "rustc-demangle" -version = "0.1.24" +name = "r-efi" +version = "5.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "719b953e2095829ee67db738b3bfa9fa368c94900df327b3f07fe6e794d2fe1f" +checksum = "69cdb34c158ceb288df11e18b4bd39de994f6657d83847bdffdbd7f346754b0f" [[package]] -name = "rustc-hash" -version = "1.1.0" +name = "radium" +version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2" +checksum = "dc33ff2d4973d518d823d61aa239014831e521c75da58e3df4840d3f47749d09" [[package]] -name = "rustc_version" -version = "0.4.1" +name = "rand" +version = "0.6.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cfcb3a22ef46e85b45de6ee7e79d063319ebb6594faafcf1c225ea92ab6e9b92" +checksum = "6d71dacdc3c88c1fde3885a3be3fbab9f35724e6ce99467f7d9c5026132184ca" dependencies = [ - "semver", + "autocfg 0.1.8", + "libc", + "rand_chacha 0.1.1", + "rand_core 0.4.2", + "rand_hc 0.1.0", + "rand_isaac", + "rand_jitter", + "rand_os", + "rand_pcg 0.1.2", + "rand_xorshift", + "winapi", ] [[package]] -name = "rustix" -version = "0.38.42" +name = "rand" +version = "0.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f93dc38ecbab2eb790ff964bb77fa94faf256fd3e73285fd7ba0903b76bedb85" +checksum = "6a6b1679d49b24bbfe0c803429aa1874472f50d9b363131f0e89fc356b544d03" dependencies = [ - "bitflags 2.6.0", - "errno", + "getrandom 0.1.16", "libc", - "linux-raw-sys", - "windows-sys 0.59.0", + "rand_chacha 0.2.2", + "rand_core 0.5.1", + "rand_hc 0.2.0", + "rand_pcg 0.2.1", ] [[package]] -name = "rustls-pemfile" -version = "1.0.4" +name = "rand" +version = "0.8.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1c74cae0a4cf6ccbbf5f359f08efdf8ee7e1dc532573bf0db71968cb56b1448c" +checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" dependencies = [ - "base64 0.21.7", + "libc", + "rand_chacha 0.3.1", + "rand_core 0.6.4", ] [[package]] -name = "rustversion" -version = "1.0.19" +name = "rand" +version = "0.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f7c45b9784283f1b2e7fb61b42047c2fd678ef0960d4f6f1eba131594cc369d4" +checksum = "9fbfd9d094a40bf3ae768db9361049ace4c0e04a4fd6b359518bd7b73a73dd97" +dependencies = [ + "rand_chacha 0.9.0", + "rand_core 0.9.3", +] [[package]] -name = "ryu" -version = "1.0.18" +name = "rand_chacha" +version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f3cb5ba0dc43242ce17de99c180e96db90b235b8a9fdc9543c96d2209116bd9f" +checksum = "556d3a1ca6600bfcbab7c7c91ccb085ac7fbbcd70e008a98742e7847f4f7bcef" +dependencies = [ + "autocfg 0.1.8", + "rand_core 0.3.1", +] [[package]] -name = "same-file" -version = "1.0.6" +name = "rand_chacha" +version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502" +checksum = "f4c8ed856279c9737206bf725bf36935d8666ead7aa69b52be55af369d193402" dependencies = [ - "winapi-util", + "ppv-lite86", + "rand_core 0.5.1", ] [[package]] -name = "schannel" -version = "0.1.27" +name = "rand_chacha" +version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1f29ebaa345f945cec9fbbc532eb307f0fdad8161f281b6369539c8d84876b3d" +checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" dependencies = [ - "windows-sys 0.59.0", + "ppv-lite86", + "rand_core 0.6.4", ] [[package]] -name = "scoped-tls" -version = "1.0.1" +name = "rand_chacha" +version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e1cf6437eb19a8f4a6cc0f7dca544973b0b78843adbfeb3683d1a94a0024a294" +checksum = "d3022b5f1df60f26e1ffddd6c66e8aa15de382ae63b3a0c1bfc0e4d3e3f325cb" +dependencies = [ + "ppv-lite86", + "rand_core 0.9.3", +] [[package]] -name = "scopeguard" -version = "1.2.0" +name = "rand_core" +version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" +checksum = "7a6fdeb83b075e8266dcc8762c22776f6877a63111121f5f8c7411e5be7eed4b" +dependencies = [ + "rand_core 0.4.2", +] [[package]] -name = "security-framework" -version = "2.11.1" +name = "rand_core" +version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "897b2245f0b511c87893af39b033e5ca9cce68824c4d7e7630b5a1d339658d02" -dependencies = [ - "bitflags 2.6.0", - "core-foundation", - "core-foundation-sys", - "libc", - "security-framework-sys", -] +checksum = "9c33a3c44ca05fa6f1807d8e6743f3824e8509beca625669633be0acbdf509dc" [[package]] -name = "security-framework-sys" -version = "2.13.0" +name = "rand_core" +version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1863fd3768cd83c56a7f60faa4dc0d403f1b6df0a38c3c25f44b7894e45370d5" +checksum = "90bde5296fc891b0cef12a6d03ddccc162ce7b2aff54160af9338f8d40df6d19" dependencies = [ - "core-foundation-sys", - "libc", + "getrandom 0.1.16", ] [[package]] -name = "selectors" -version = "0.22.0" +name = "rand_core" +version = "0.6.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "df320f1889ac4ba6bc0cdc9c9af7af4bd64bb927bccdf32d81140dc1f9be12fe" +checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" dependencies = [ - "bitflags 1.3.2", - "cssparser", - "derive_more", - "fxhash", - "log", - "matches", - "phf 0.8.0", - "phf_codegen 0.8.0", - "precomputed-hash", - "servo_arc", - "smallvec", - "thin-slice", + "getrandom 0.2.15", ] [[package]] -name = "semver" -version = "1.0.24" +name = "rand_core" +version = "0.9.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3cb6eb87a131f756572d7fb904f6e7b68633f09cca868c5df1c4b8d1a694bbba" +checksum = "99d9a13982dcf210057a8a78572b2217b667c3beacbf3a0d8b454f6f82837d38" dependencies = [ - "serde", + "getrandom 0.3.3", ] [[package]] -name = "serde" -version = "1.0.217" +name = "rand_hc" +version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "02fc4265df13d6fa1d00ecff087228cc0a2b5f3c0e87e258d8b94a156e984c70" +checksum = "7b40677c7be09ae76218dc623efbf7b18e34bced3f38883af07bb75630a21bc4" dependencies = [ - "serde_derive", + "rand_core 0.3.1", ] [[package]] -name = "serde_derive" -version = "1.0.217" +name = "rand_hc" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5a9bf7cf98d04a2b28aead066b7496853d4779c9cc183c440dbac457641e19a0" +checksum = "ca3129af7b92a17112d59ad498c6f81eaf463253766b90396d39ea7a39d6613c" dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.93", + "rand_core 0.5.1", ] [[package]] -name = "serde_json" -version = "1.0.134" +name = "rand_isaac" +version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d00f4175c42ee48b15416f6193a959ba3a0d67fc699a0db9ad12df9f83991c7d" +checksum = "ded997c9d5f13925be2a6fd7e66bf1872597f759fd9dd93513dd7e92e5a5ee08" dependencies = [ - "indexmap 2.7.0", - "itoa 1.0.14", - "memchr", - "ryu", - "serde", + "rand_core 0.3.1", ] [[package]] -name = "serde_repr" -version = "0.1.19" +name = "rand_jitter" +version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6c64451ba24fc7a6a2d60fc75dd9c83c90903b19028d4eff35e88fc1e86564e9" +checksum = "1166d5c91dc97b88d1decc3285bb0a99ed84b05cfd0bc2341bdf2d43fc41e39b" dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.93", + "libc", + "rand_core 0.4.2", + "winapi", ] [[package]] -name = "serde_spanned" -version = "0.6.8" +name = "rand_os" +version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "87607cb1398ed59d48732e575a4c28a7a8ebf2454b964fe3f224f2afc07909e1" +checksum = "7b75f676a1e053fc562eafbb47838d67c84801e38fc1ba459e8f180deabd5071" dependencies = [ - "serde", + "cloudabi", + "fuchsia-cprng", + "libc", + "rand_core 0.4.2", + "rdrand", + "winapi", ] [[package]] -name = "serde_urlencoded" -version = "0.7.1" +name = "rand_pcg" +version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d3491c14715ca2294c4d6a88f15e84739788c1d030eed8c110436aafdaa2f3fd" +checksum = "abf9b09b01790cfe0364f52bf32995ea3c39f4d2dd011eac241d2914146d0b44" dependencies = [ - "form_urlencoded", - "itoa 1.0.14", - "ryu", - "serde", + "autocfg 0.1.8", + "rand_core 0.4.2", ] [[package]] -name = "serde_with" -version = "3.12.0" +name = "rand_pcg" +version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d6b6f7f2fcb69f747921f79f3926bd1e203fce4fef62c268dd3abfb6d86029aa" +checksum = "16abd0c1b639e9eb4d7c50c0b8100b0d0f849be2349829c740fe8e6eb4816429" dependencies = [ - "base64 0.22.1", - "chrono", - "hex", - "indexmap 1.9.3", - "indexmap 2.7.0", - "serde", - "serde_derive", - "serde_json", - "serde_with_macros", - "time", + "rand_core 0.5.1", ] [[package]] -name = "serde_with_macros" -version = "3.12.0" +name = "rand_xorshift" +version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8d00caa5193a3c8362ac2b73be6b9e768aa5a4b2f721d8f4b339600c3cb51f8e" +checksum = "cbf7e9e623549b0e21f6e97cf8ecf247c1a8fd2e8a992ae265314300b2455d5c" dependencies = [ - "darling", - "proc-macro2", - "quote", - "syn 2.0.93", + "rand_core 0.3.1", ] [[package]] -name = "serialize-to-javascript" -version = "0.1.2" +name = "raw-window-handle" +version = "0.6.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "04f3666a07a197cdb77cdf306c32be9b7f598d7060d50cfd4d5aa04bfd92f6c5" -dependencies = [ - "serde", - "serde_json", - "serialize-to-javascript-impl", -] +checksum = "20675572f6f24e9e76ef639bc5552774ed45f1c30e2951e1e99c59888861c539" [[package]] -name = "serialize-to-javascript-impl" -version = "0.1.2" +name = "rayon" +version = "1.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "772ee033c0916d670af7860b6e1ef7d658a4629a6d0b4c8c3e67f09b3765b75d" +checksum = "b418a60154510ca1a002a752ca9714984e21e4241e804d32555251faf8b78ffa" dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.93", + "either", + "rayon-core", ] [[package]] -name = "servo_arc" -version = "0.1.1" +name = "rayon-core" +version = "1.12.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d98238b800e0d1576d8b6e3de32827c2d74bee68bb97748dcf5071fb53965432" +checksum = "1465873a3dfdaa8ae7cb14b4383657caab0b3e8a0aa9ae8e04b044854c8dfce2" dependencies = [ - "nodrop", - "stable_deref_trait", + "crossbeam-deque", + "crossbeam-utils", ] [[package]] -name = "sha2" -version = "0.10.8" +name = "rdrand" +version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "793db75ad2bcafc3ffa7c68b215fee268f537982cd901d132f89c6343f3a3dc8" +checksum = "678054eb77286b51581ba43620cc911abf02758c91f93f479767aed0f90458b2" dependencies = [ - "cfg-if", - "cpufeatures", - "digest", + "rand_core 0.3.1", ] [[package]] -name = "sharded-slab" -version = "0.1.7" +name = "redox_syscall" +version = "0.5.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f40ca3c46823713e0d4209592e8d6e826aa57e928f09752619fc696c499637f6" +checksum = "03a862b389f93e68874fbf580b9de08dd02facb9a788ebadaf4a3fd33cf58834" dependencies = [ - "lazy_static", + "bitflags 2.9.1", ] [[package]] -name = "shell-words" -version = "1.1.0" +name = "redox_users" +version = "0.4.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "24188a676b6ae68c3b2cb3a01be17fbf7240ce009799bb56d5b1409051e78fde" +checksum = "ba009ff324d1fc1b900bd1fdb31564febe58a8ccc8a6fdbb93b543d33b13ca43" +dependencies = [ + "getrandom 0.2.15", + "libredox", + "thiserror 1.0.69", +] [[package]] -name = "shlex" -version = "1.3.0" +name = "redox_users" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" +checksum = "dd6f9d3d47bdd2ad6945c5015a226ec6155d0bcdfd8f7cd29f86b71f8de99d2b" +dependencies = [ + "getrandom 0.2.15", + "libredox", + "thiserror 2.0.12", +] [[package]] -name = "simd-adler32" -version = "0.3.7" +name = "regex" +version = "1.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d66dc143e6b11c1eddc06d5c423cfc97062865baf299914ab64caa38182078fe" +checksum = "b544ef1b4eac5dc2db33ea63606ae9ffcfac26c1416a2806ae0bf5f56b201191" +dependencies = [ + "aho-corasick", + "memchr", + "regex-automata 0.4.9", + "regex-syntax 0.8.5", +] [[package]] -name = "siphasher" -version = "0.3.11" +name = "regex-automata" +version = "0.1.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38b58827f4464d87d377d175e90bf58eb00fd8716ff0a62f80356b5e61555d0d" +checksum = "6c230d73fb8d8c1b9c0b3135c5142a8acee3a0558fb8db5cf1cb65f8d7862132" +dependencies = [ + "regex-syntax 0.6.29", +] [[package]] -name = "slab" +name = "regex-automata" version = "0.4.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f92a496fb766b417c996b9c5e57daf2f7ad3b0bebe1ccfca4856390e3d3bb67" +checksum = "809e8dc61f6de73b46c85f4c96486310fe304c434cfa43669d7b40f711150908" dependencies = [ - "autocfg", + "aho-corasick", + "memchr", + "regex-syntax 0.8.5", ] [[package]] -name = "slug" -version = "0.1.6" +name = "regex-syntax" +version = "0.6.29" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "882a80f72ee45de3cc9a5afeb2da0331d58df69e4e7d8eeb5d3c7784ae67e724" -dependencies = [ - "deunicode", - "wasm-bindgen", -] +checksum = "f162c6dd7b008981e4d40210aca20b4bd0f9b60ca9271061b07f78537722f2e1" [[package]] -name = "smallvec" -version = "1.13.2" +name = "regex-syntax" +version = "0.8.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67" +checksum = "2b15c43186be67a4fd63bee50d0303afffcef381492ebe2c5d87f324e1b8815c" [[package]] -name = "socket2" -version = "0.5.8" +name = "rend" +version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c970269d99b64e60ec3bd6ad27270092a5394c4e309314b18ae3fe575695fbe8" +checksum = "71fe3824f5629716b1589be05dacd749f6aa084c87e00e016714a8cdfccc997c" dependencies = [ - "libc", - "windows-sys 0.52.0", + "bytecheck", ] [[package]] -name = "soup2" -version = "0.2.1" +name = "reqwest" +version = "0.11.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b2b4d76501d8ba387cf0fefbe055c3e0a59891d09f0f995ae4e4b16f6b60f3c0" +checksum = "dd67538700a17451e7cba03ac727fb961abb7607553461627b97de0b89cf4a62" dependencies = [ - "bitflags 1.3.2", - "gio", - "glib", - "libc", + "base64 0.21.7", + "bytes", + "encoding_rs", + "futures-core", + "futures-util", + "h2 0.3.26", + "http 0.2.12", + "http-body 0.4.6", + "hyper 0.14.32", + "hyper-tls 0.5.0", + "ipnet", + "js-sys", + "log 0.4.27", + "mime 0.3.17", + "native-tls", "once_cell", - "soup2-sys", + "percent-encoding 2.3.1", + "pin-project-lite", + "rustls-pemfile", + "serde", + "serde_json", + "serde_urlencoded", + "sync_wrapper 0.1.2", + "system-configuration 0.5.1", + "tokio", + "tokio-native-tls", + "tower-service", + "url 2.5.4", + "wasm-bindgen", + "wasm-bindgen-futures", + "web-sys", + "winreg 0.50.0", ] [[package]] -name = "soup2-sys" -version = "0.2.0" +name = "reqwest" +version = "0.12.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "009ef427103fcb17f802871647a7fa6c60cbb654b4c4e4c0ac60a31c5f6dc9cf" +checksum = "eabf4c97d9130e2bf606614eb937e86edac8292eaa6f422f995d7e8de1eb1813" dependencies = [ - "bitflags 1.3.2", - "gio-sys", - "glib-sys", - "gobject-sys", - "libc", - "system-deps 5.0.0", + "base64 0.22.1", + "bytes", + "cookie", + "cookie_store", + "encoding_rs", + "futures-core", + "futures-util", + "h2 0.4.11", + "http 1.3.1", + "http-body 1.0.1", + "http-body-util", + "hyper 1.6.0", + "hyper-rustls", + "hyper-tls 0.6.0", + "hyper-util", + "js-sys", + "log 0.4.27", + "mime 0.3.17", + "native-tls", + "percent-encoding 2.3.1", + "pin-project-lite", + "quinn", + "rustls", + "rustls-pki-types", + "serde", + "serde_json", + "serde_urlencoded", + "sync_wrapper 1.0.2", + "tokio", + "tokio-native-tls", + "tokio-rustls", + "tokio-util", + "tower 0.5.2", + "tower-http 0.6.6", + "tower-service", + "url 2.5.4", + "wasm-bindgen", + "wasm-bindgen-futures", + "wasm-streams", + "web-sys", + "webpki-roots 1.0.1", ] [[package]] -name = "stable_deref_trait" -version = "1.2.0" +name = "resvg" +version = "0.38.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a8f112729512f8e442d81f95a8a7ddf2b7c6b8a1a6f509a95864142b30cab2d3" +checksum = "5c34501046959e06470ba62a2dc7f31c15f94ac250d842a45f9e012f4ee40c1e" +dependencies = [ + "gif 0.12.0", + "jpeg-decoder", + "log 0.4.27", + "pico-args", + "png", + "rgb", + "svgtypes", + "tiny-skia", + "usvg", +] [[package]] -name = "state" -version = "0.5.3" +name = "rfd" +version = "0.15.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dbe866e1e51e8260c9eed836a042a5e7f6726bb2b411dffeaa712e19c388f23b" +checksum = "80c844748fdc82aae252ee4594a89b6e7ebef1063de7951545564cbc4e57075d" dependencies = [ - "loom", + "ashpd", + "block2 0.6.1", + "dispatch2 0.2.0", + "glib-sys", + "gobject-sys", + "gtk-sys", + "js-sys", + "log 0.4.27", + "objc2 0.6.1", + "objc2-app-kit", + "objc2-core-foundation", + "objc2-foundation 0.3.1", + "raw-window-handle", + "wasm-bindgen", + "wasm-bindgen-futures", + "web-sys", + "windows-sys 0.59.0", ] [[package]] -name = "string_cache" -version = "0.8.7" +name = "rgb" +version = "0.8.50" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f91138e76242f575eb1d3b38b4f1362f10d3a43f47d182a5b359af488a02293b" +checksum = "57397d16646700483b67d2dd6511d79318f9d057fdbd21a4066aeac8b41d310a" dependencies = [ - "new_debug_unreachable", - "once_cell", - "parking_lot", - "phf_shared 0.10.0", - "precomputed-hash", - "serde", + "bytemuck", ] [[package]] -name = "string_cache_codegen" -version = "0.5.2" +name = "ring" +version = "0.17.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6bb30289b722be4ff74a408c3cc27edeaad656e06cb1fe8fa9231fa59c728988" +checksum = "a4689e6c2294d81e88dc6261c768b63bc4fcdb852be6d1352498b114f61383b7" dependencies = [ - "phf_generator 0.10.0", - "phf_shared 0.10.0", - "proc-macro2", - "quote", + "cc", + "cfg-if", + "getrandom 0.2.15", + "libc", + "untrusted", + "windows-sys 0.52.0", ] [[package]] -name = "strsim" -version = "0.11.1" +name = "ringbuf" +version = "0.4.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f" +checksum = "fe47b720588c8702e34b5979cb3271a8b1842c7cb6f57408efa70c779363488c" +dependencies = [ + "crossbeam-utils", + "portable-atomic", + "portable-atomic-util", +] [[package]] -name = "syn" -version = "1.0.109" +name = "rkyv" +version = "0.7.45" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237" +checksum = "9008cd6385b9e161d8229e1f6549dd23c3d022f132a2ea37ac3a10ac4935779b" dependencies = [ - "proc-macro2", - "quote", - "unicode-ident", + "bitvec", + "bytecheck", + "bytes", + "hashbrown 0.12.3", + "ptr_meta", + "rend", + "rkyv_derive", + "seahash", + "tinyvec", + "uuid", ] [[package]] -name = "syn" -version = "2.0.93" +name = "rkyv_derive" +version = "0.7.45" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c786062daee0d6db1132800e623df74274a0a87322d8e183338e01b3d98d058" +checksum = "503d1d27590a2b0a3a4ca4c94755aa2875657196ecbf401a42eff41d7de532c0" dependencies = [ "proc-macro2", "quote", - "unicode-ident", + "syn 1.0.109", ] [[package]] -name = "sync_wrapper" -version = "0.1.2" +name = "roxmltree" +version = "0.19.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2047c6ded9c721764247e62cd3b03c09ffc529b2ba5b10ec482ae507a4a70160" +checksum = "3cd14fd5e3b777a7422cca79358c57a8f6e3a703d9ac187448d0daf220c2407f" [[package]] -name = "synstructure" -version = "0.13.1" +name = "roxmltree" +version = "0.20.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c8af7666ab7b6390ab78131fb5b0fce11d6b7a6951602017c35fa82800708971" +checksum = "6c20b6793b5c2fa6553b250154b78d6d0db37e72700ae35fad9387a46f487c97" + +[[package]] +name = "rtf-parser" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f353dfc9f41a72a3d79282bed162c9742795ba740abd05f72c60f7d9d15649c4" dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.93", + "derivative", ] [[package]] -name = "syntect" -version = "5.2.0" +name = "rust-ini" +version = "0.21.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "874dcfa363995604333cf947ae9f751ca3af4522c60886774c4963943b4746b1" +checksum = "4e310ef0e1b6eeb79169a1171daf9abcb87a2e17c03bee2c4bb100b55c75409f" dependencies = [ - "bincode", - "bitflags 1.3.2", - "fancy-regex", - "flate2", - "fnv", - "once_cell", - "onig", - "plist", - "regex-syntax 0.8.5", + "cfg-if", + "ordered-multimap", + "trim-in-place", +] + +[[package]] +name = "rust_decimal" +version = "1.37.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b203a6425500a03e0919c42d3c47caca51e79f1132046626d2c8871c5092035d" +dependencies = [ + "arrayvec", + "borsh", + "bytes", + "num-traits", + "rand 0.8.5", + "rkyv", "serde", - "serde_derive", "serde_json", - "thiserror", - "walkdir", - "yaml-rust", ] [[package]] -name = "sys-locale" -version = "0.3.2" +name = "rust_decimal_macros" +version = "1.37.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8eab9a99a024a169fe8a903cf9d4a3b3601109bcc13bd9e3c6fff259138626c4" +checksum = "f6268b74858287e1a062271b988a0c534bf85bbeb567fe09331bf40ed78113d5" dependencies = [ - "libc", + "quote", + "syn 2.0.93", ] [[package]] -name = "sysinfo" -version = "0.29.11" +name = "rust_xlsxwriter" +version = "0.64.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cd727fc423c2060f6c92d9534cef765c65a6ed3f428a03d7def74a8c4348e666" +checksum = "b5f47f5318c1e512e57c07781559367577b1eb9618325cf1574cd30d38b112c5" dependencies = [ - "cfg-if", - "core-foundation-sys", - "libc", - "ntapi", - "once_cell", - "rayon", - "winapi", + "lazy_static", + "regex", + "zip 0.6.6", ] [[package]] -name = "system-configuration" -version = "0.5.1" +name = "rustc-demangle" +version = "0.1.24" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ba3a3adc5c275d719af8cb4272ea1c4a6d668a777f37e115f6d11ddbc1c8e0e7" +checksum = "719b953e2095829ee67db738b3bfa9fa368c94900df327b3f07fe6e794d2fe1f" + +[[package]] +name = "rustc-hash" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2" + +[[package]] +name = "rustc-hash" +version = "2.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "357703d41365b4b27c590e3ed91eabb1b663f07c4c084095e60cbed4362dff0d" + +[[package]] +name = "rustc_version" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cfcb3a22ef46e85b45de6ee7e79d063319ebb6594faafcf1c225ea92ab6e9b92" dependencies = [ - "bitflags 1.3.2", - "core-foundation", - "system-configuration-sys", + "semver", ] [[package]] -name = "system-configuration-sys" -version = "0.5.0" +name = "rustix" +version = "0.38.44" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a75fb188eb626b924683e3b95e3a48e63551fcfb51949de2f06a9d91dbee93c9" +checksum = "fdb5bc1ae2baa591800df16c9ca78619bf65c0488b41b96ccec5d11220d8c154" dependencies = [ - "core-foundation-sys", + "bitflags 2.9.1", + "errno", "libc", + "linux-raw-sys 0.4.14", + "windows-sys 0.59.0", ] [[package]] -name = "system-deps" -version = "5.0.0" +name = "rustix" +version = "1.0.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "18db855554db7bd0e73e06cf7ba3df39f97812cb11d3f75e71c39bf45171797e" +checksum = "c71e83d6afe7ff64890ec6b71d6a69bb8a610ab78ce364b3352876bb4c801266" dependencies = [ - "cfg-expr 0.9.1", - "heck 0.3.3", - "pkg-config", - "toml 0.5.11", - "version-compare 0.0.11", + "bitflags 2.9.1", + "errno", + "libc", + "linux-raw-sys 0.9.4", + "windows-sys 0.59.0", ] [[package]] -name = "system-deps" -version = "6.2.2" +name = "rustls" +version = "0.23.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a3e535eb8dded36d55ec13eddacd30dec501792ff23a0b1682c38601b8cf2349" +checksum = "7160e3e10bf4535308537f3c4e1641468cd0e485175d6163087c0393c7d46643" dependencies = [ - "cfg-expr 0.15.8", - "heck 0.5.0", - "pkg-config", - "toml 0.8.19", - "version-compare 0.2.0", + "log 0.4.27", + "once_cell", + "ring", + "rustls-pki-types", + "rustls-webpki", + "subtle", + "zeroize", ] [[package]] -name = "tao" -version = "0.16.10" +name = "rustls-pemfile" +version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "48d298c441a1da46e28e8ad8ec205aab7fd8cd71b9d10e05454224eef422e1ae" +checksum = "1c74cae0a4cf6ccbbf5f359f08efdf8ee7e1dc532573bf0db71968cb56b1448c" dependencies = [ - "bitflags 1.3.2", - "cairo-rs", - "cc", - "cocoa", - "core-foundation", - "core-graphics", - "crossbeam-channel", - "dispatch", - "gdk", - "gdk-pixbuf", - "gdk-sys", - "gdkwayland-sys", - "gdkx11-sys", - "gio", - "glib", - "glib-sys", - "gtk", - "image", - "instant", - "jni", - "lazy_static", - "libc", - "log", - "ndk", - "ndk-context", - "ndk-sys", - "objc", - "once_cell", - "parking_lot", - "png", - "raw-window-handle", - "scopeguard", - "serde", - "tao-macros", - "unicode-segmentation", - "uuid", - "windows 0.39.0", - "windows-implement", - "x11-dl", + "base64 0.21.7", ] [[package]] -name = "tao-macros" -version = "0.1.3" +name = "rustls-pki-types" +version = "1.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f4e16beb8b2ac17db28eab8bca40e62dbfbb34c0fcdc6d9826b11b7b5d047dfd" +checksum = "229a4a4c221013e7e1f1a043678c5cc39fe5171437c88fb47151a21e6f5b5c79" dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.93", + "web-time", + "zeroize", ] [[package]] -name = "tar" -version = "0.4.43" +name = "rustls-webpki" +version = "0.103.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c65998313f8e17d0d553d28f91a0df93e4dbbbf770279c7bc21ca0f09ea1a1f6" +checksum = "e4a72fe2bcf7a6ac6fd7d0b9e5cb68aeb7d4c0a0271730218b3e92d43b4eb435" dependencies = [ - "filetime", - "libc", - "xattr", + "ring", + "rustls-pki-types", + "untrusted", ] [[package]] -name = "target-lexicon" -version = "0.12.16" +name = "rustversion" +version = "1.0.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "61c41af27dd6d1e27b1b16b489db798443478cef1f06a660c96db617ba5de3b1" +checksum = "f7c45b9784283f1b2e7fb61b42047c2fd678ef0960d4f6f1eba131594cc369d4" [[package]] -name = "tauri" -version = "1.8.1" +name = "rustybuzz" +version = "0.12.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1bf327e247698d3f39af8aa99401c9708384290d1f5c544bf5d251d44c2fea22" +checksum = "f0ae5692c5beaad6a9e22830deeed7874eae8a4e3ba4076fb48e12c56856222c" dependencies = [ - "anyhow", - "cocoa", - "dirs-next", - "dunce", - "embed_plist", - "encoding_rs", - "flate2", - "futures-util", - "getrandom 0.2.15", - "glib", - "glob", - "gtk", - "heck 0.5.0", - "http", - "ignore", - "log", - "objc", - "once_cell", - "open", - "os_info", - "percent-encoding", - "plist", - "rand 0.8.5", - "raw-window-handle", - "regex", - "semver", - "serde", - "serde_json", - "serde_repr", - "serialize-to-javascript", - "state", - "sys-locale", - "tar", - "tauri-macros", - "tauri-runtime", - "tauri-runtime-wry", - "tauri-utils", - "tempfile", - "thiserror", - "tokio", - "url", - "uuid", - "webkit2gtk", - "webview2-com", - "windows 0.39.0", + "bitflags 2.9.1", + "bytemuck", + "smallvec", + "ttf-parser", + "unicode-bidi-mirroring", + "unicode-ccc", + "unicode-properties", + "unicode-script", ] [[package]] -name = "tauri-build" -version = "1.5.5" +name = "ryu" +version = "1.0.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "586f3e677f940c8bb4f70c52eda05dc59b79e61543f1182de83516810bb8e35d" -dependencies = [ - "anyhow", - "cargo_toml", - "dirs-next", - "heck 0.5.0", - "json-patch", - "semver", - "serde", - "serde_json", - "tauri-utils", - "tauri-winres", - "walkdir", -] +checksum = "f3cb5ba0dc43242ce17de99c180e96db90b235b8a9fdc9543c96d2209116bd9f" [[package]] -name = "tauri-codegen" -version = "1.4.5" +name = "safemem" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ef703b7cb59335eae2eb93ceb664c0eb7ea6bf567079d843e09420219668e072" + +[[package]] +name = "same-file" +version = "1.0.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "93a9e3f5cebf779a63bf24903e714ec91196c307d8249a0008b882424328bcda" +checksum = "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502" dependencies = [ - "base64 0.21.7", - "brotli", - "ico", - "json-patch", - "plist", - "png", - "proc-macro2", - "quote", - "regex", - "semver", - "serde", - "serde_json", - "sha2", - "tauri-utils", - "thiserror", - "time", - "uuid", - "walkdir", + "winapi-util", ] [[package]] -name = "tauri-macros" -version = "1.4.6" +name = "schannel" +version = "0.1.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d1d0e989f54fe06c5ef0875c5e19cf96453d099a0a774d5192ab47e80471cdab" +checksum = "1f29ebaa345f945cec9fbbc532eb307f0fdad8161f281b6369539c8d84876b3d" dependencies = [ - "heck 0.5.0", - "proc-macro2", - "quote", - "syn 1.0.109", - "tauri-codegen", - "tauri-utils", + "windows-sys 0.59.0", ] [[package]] -name = "tauri-runtime" -version = "0.14.5" +name = "schemars" +version = "0.8.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f33fda7d213e239077fad52e96c6b734cecedb30c2382118b64f94cb5103ff3a" +checksum = "3fbf2ae1b8bc8e02df939598064d22402220cd5bbcca1c76f7d6a310974d5615" dependencies = [ - "gtk", - "http", - "http-range", - "rand 0.8.5", - "raw-window-handle", + "dyn-clone", + "indexmap 1.9.3", + "schemars_derive", "serde", "serde_json", - "tauri-utils", - "thiserror", - "url", + "url 2.5.4", "uuid", - "webview2-com", - "windows 0.39.0", ] [[package]] -name = "tauri-runtime-wry" -version = "0.14.10" +name = "schemars_derive" +version = "0.8.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "18c447dcd9b0f09c7dc4b752cc33e72788805bfd761fbda5692d30c48289efec" +checksum = "32e265784ad618884abaea0600a9adf15393368d840e0222d101a072f3f7534d" dependencies = [ - "cocoa", - "gtk", - "percent-encoding", - "rand 0.8.5", - "raw-window-handle", - "tauri-runtime", - "tauri-utils", - "uuid", - "webkit2gtk", - "webview2-com", - "windows 0.39.0", - "wry", + "proc-macro2", + "quote", + "serde_derive_internals", + "syn 2.0.93", ] [[package]] -name = "tauri-utils" -version = "1.6.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "83a0c939e88d82903a0a7dfb28388b12a3c03504d6bd6086550edaa3b6d8beaa" +name = "scopeguard" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" + +[[package]] +name = "scraper" +version = "0.19.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "761fb705fdf625482d2ed91d3f0559dcfeab2798fe2771c69560a774865d0802" dependencies = [ - "brotli", - "ctor", - "dunce", - "glob", - "heck 0.5.0", - "html5ever", - "infer", - "json-patch", - "kuchikiki", - "log", + "ahash 0.8.12", + "cssparser 0.31.2", + "ego-tree", + "getopts", + "html5ever 0.27.0", + "once_cell", + "selectors 0.25.0", + "tendril", +] + +[[package]] +name = "seahash" +version = "4.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1c107b6f4780854c8b126e228ea8869f4d7b71260f962fefb57b996b8959ba6b" + +[[package]] +name = "security-framework" +version = "2.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "897b2245f0b511c87893af39b033e5ca9cce68824c4d7e7630b5a1d339658d02" +dependencies = [ + "bitflags 2.9.1", + "core-foundation 0.9.4", + "core-foundation-sys", + "libc", + "security-framework-sys", +] + +[[package]] +name = "security-framework-sys" +version = "2.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1863fd3768cd83c56a7f60faa4dc0d403f1b6df0a38c3c25f44b7894e45370d5" +dependencies = [ + "core-foundation-sys", + "libc", +] + +[[package]] +name = "selectors" +version = "0.24.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0c37578180969d00692904465fb7f6b3d50b9a2b952b87c23d0e2e5cb5013416" +dependencies = [ + "bitflags 1.3.2", + "cssparser 0.29.6", + "derive_more", + "fxhash", + "log 0.4.27", + "phf 0.8.0", + "phf_codegen 0.8.0", + "precomputed-hash", + "servo_arc 0.2.0", + "smallvec", +] + +[[package]] +name = "selectors" +version = "0.25.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4eb30575f3638fc8f6815f448d50cb1a2e255b0897985c8c59f4d37b72a07b06" +dependencies = [ + "bitflags 2.9.1", + "cssparser 0.31.2", + "derive_more", + "fxhash", + "log 0.4.27", + "new_debug_unreachable", + "phf 0.10.1", + "phf_codegen 0.10.0", + "precomputed-hash", + "servo_arc 0.3.0", + "smallvec", +] + +[[package]] +name = "semver" +version = "1.0.24" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3cb6eb87a131f756572d7fb904f6e7b68633f09cca868c5df1c4b8d1a694bbba" +dependencies = [ + "serde", +] + +[[package]] +name = "serde" +version = "1.0.219" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5f0e2c6ed6606019b4e29e69dbaba95b11854410e5347d525002456dbbb786b6" +dependencies = [ + "serde_derive", +] + +[[package]] +name = "serde-untagged" +version = "0.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "299d9c19d7d466db4ab10addd5703e4c615dec2a5a16dbbafe191045e87ee66e" +dependencies = [ + "erased-serde", + "serde", + "typeid", +] + +[[package]] +name = "serde-xml-rs" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fb3aa78ecda1ebc9ec9847d5d3aba7d618823446a049ba2491940506da6e2782" +dependencies = [ + "log 0.4.27", + "serde", + "thiserror 1.0.69", + "xml-rs", +] + +[[package]] +name = "serde_derive" +version = "1.0.219" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5b0276cf7f2c73365f7157c8123c21cd9a50fbbd844757af28ca1f5925fc2a00" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.93", +] + +[[package]] +name = "serde_derive_internals" +version = "0.29.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "18d26a20a969b9e3fdf2fc2d9f21eda6c40e2de84c9408bb5d3b05d499aae711" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.93", +] + +[[package]] +name = "serde_json" +version = "1.0.140" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "20068b6e96dc6c9bd23e01df8827e6c7e1f2fddd43c21810382803c136b99373" +dependencies = [ + "itoa", "memchr", - "phf 0.11.2", + "ryu", + "serde", +] + +[[package]] +name = "serde_repr" +version = "0.1.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6c64451ba24fc7a6a2d60fc75dd9c83c90903b19028d4eff35e88fc1e86564e9" +dependencies = [ "proc-macro2", "quote", - "semver", + "syn 2.0.93", +] + +[[package]] +name = "serde_spanned" +version = "0.6.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "87607cb1398ed59d48732e575a4c28a7a8ebf2454b964fe3f224f2afc07909e1" +dependencies = [ + "serde", +] + +[[package]] +name = "serde_urlencoded" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3491c14715ca2294c4d6a88f15e84739788c1d030eed8c110436aafdaa2f3fd" +dependencies = [ + "form_urlencoded", + "itoa", + "ryu", + "serde", +] + +[[package]] +name = "serde_with" +version = "3.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d6b6f7f2fcb69f747921f79f3926bd1e203fce4fef62c268dd3abfb6d86029aa" +dependencies = [ + "base64 0.22.1", + "chrono", + "hex", + "indexmap 1.9.3", + "indexmap 2.7.0", "serde", + "serde_derive", "serde_json", - "serde_with", - "thiserror", - "url", - "walkdir", - "windows-version", + "serde_with_macros", + "time 0.3.37", +] + +[[package]] +name = "serde_with_macros" +version = "3.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8d00caa5193a3c8362ac2b73be6b9e768aa5a4b2f721d8f4b339600c3cb51f8e" +dependencies = [ + "darling", + "proc-macro2", + "quote", + "syn 2.0.93", +] + +[[package]] +name = "serde_yaml" +version = "0.9.34+deprecated" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6a8b1a1a2ebf674015cc02edccce75287f1a0130d394307b36743c2f5d504b47" +dependencies = [ + "indexmap 2.7.0", + "itoa", + "ryu", + "serde", + "unsafe-libyaml", +] + +[[package]] +name = "serialize-to-javascript" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c9823f2d3b6a81d98228151fdeaf848206a7855a7a042bbf9bf870449a66cafb" +dependencies = [ + "serde", + "serde_json", + "serialize-to-javascript-impl", +] + +[[package]] +name = "serialize-to-javascript-impl" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "74064874e9f6a15f04c1f3cb627902d0e6b410abbf36668afa873c61889f1763" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "servo_arc" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d52aa42f8fdf0fed91e5ce7f23d8138441002fa31dca008acf47e6fd4721f741" +dependencies = [ + "nodrop", + "stable_deref_trait", +] + +[[package]] +name = "servo_arc" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d036d71a959e00c77a63538b90a6c2390969f9772b096ea837205c6bd0491a44" +dependencies = [ + "stable_deref_trait", +] + +[[package]] +name = "sha2" +version = "0.10.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "793db75ad2bcafc3ffa7c68b215fee268f537982cd901d132f89c6343f3a3dc8" +dependencies = [ + "cfg-if", + "cpufeatures", + "digest", +] + +[[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.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c2778001df1384cf20b6dc5a5a90f48da35539885edaaefd887f8d744e939c0b" +dependencies = [ + "libc", + "sigchld", + "windows-sys 0.60.2", +] + +[[package]] +name = "shell-words" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "24188a676b6ae68c3b2cb3a01be17fbf7240ce009799bb56d5b1409051e78fde" + +[[package]] +name = "shiva" +version = "1.4.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9c68c3d427bc6c1bf76def0738c7797b9f73c073b087719436ffb43c6d8d7456" +dependencies = [ + "anyhow", + "base64 0.22.1", + "bytes", + "calamine", + "comemo", + "comrak 0.28.0", + "csv", + "docx-rs", + "ego-tree", + "ehttp", + "icu_locid", + "image 0.24.9", + "js-sys", + "log 0.4.27", + "lopdf", + "pulldown-cmark", + "quick-xml 0.31.0", + "regex", + "rtf-parser", + "rust_xlsxwriter", + "scraper", + "serde", + "serde-xml-rs", + "serde_json", + "shiva-spreadsheet-ods", + "strum 0.26.3", + "thiserror 1.0.69", + "time 0.3.37", + "ttf-parser", + "typst", + "typst-pdf", + "wasm-bindgen", + "wasm-bindgen-futures", + "web-sys", +] + +[[package]] +name = "shiva-color-rs" +version = "0.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d7bea807e4f40f1a3df2717cc134562397b6a8f869f22568388fd5eb14bb1b69" +dependencies = [ + "angle", + "half 1.8.3", + "num-traits", + "serde", + "serde_derive", +] + +[[package]] +name = "shiva-spreadsheet-ods" +version = "0.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "14ed2449ec5945100f274327612fc0f2d2b9356ee8eb8b32b81e927294b5f1fd" +dependencies = [ + "base64 0.22.1", + "chrono", + "get-size", + "get-size-derive", + "icu_locid", + "kparse", + "lazy_static", + "nom", + "nom_locate", + "quick-xml 0.31.0", + "rust_decimal", + "rust_decimal_macros", + "shiva-color-rs", + "string_cache", + "time 0.3.37", + "unicode-ident", + "zip 2.4.2", +] + +[[package]] +name = "shlex" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" + +[[package]] +name = "sigchld" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1219ef50fc0fdb04fcc243e6aa27f855553434ffafe4fa26554efb78b5b4bf89" +dependencies = [ + "libc", + "os_pipe", + "signal-hook", +] + +[[package]] +name = "signal-hook" +version = "0.3.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d881a16cf4426aa584979d30bd82cb33429027e42122b169753d6ef1085ed6e2" +dependencies = [ + "libc", + "signal-hook-registry", +] + +[[package]] +name = "signal-hook-registry" +version = "1.4.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9203b8055f63a2a00e2f593bb0510367fe707d7ff1e5c872de2f537b339e5410" +dependencies = [ + "libc", +] + +[[package]] +name = "simd-adler32" +version = "0.3.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d66dc143e6b11c1eddc06d5c423cfc97062865baf299914ab64caa38182078fe" + +[[package]] +name = "simdutf8" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e3a9fe34e3e7a50316060351f37187a3f546bce95496156754b601a5fa71b76e" + +[[package]] +name = "simplecss" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7a9c6883ca9c3c7c90e888de77b7a5c849c779d25d74a1269b0218b14e8b136c" +dependencies = [ + "log 0.4.27", +] + +[[package]] +name = "siphasher" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b8de496cf83d4ed58b6be86c3a275b8602f6ffe98d3024a869e124147a9a3ac" + +[[package]] +name = "siphasher" +version = "0.3.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "38b58827f4464d87d377d175e90bf58eb00fd8716ff0a62f80356b5e61555d0d" + +[[package]] +name = "siphasher" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "56199f7ddabf13fe5074ce809e7d3f42b42ae711800501b5b16ea82ad029c39d" + +[[package]] +name = "slab" +version = "0.4.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f92a496fb766b417c996b9c5e57daf2f7ad3b0bebe1ccfca4856390e3d3bb67" +dependencies = [ + "autocfg 1.4.0", +] + +[[package]] +name = "slotmap" +version = "1.0.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dbff4acf519f630b3a3ddcfaea6c06b42174d9a44bc70c620e9ed1649d58b82a" +dependencies = [ + "version_check 0.9.5", +] + +[[package]] +name = "slug" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "882a80f72ee45de3cc9a5afeb2da0331d58df69e4e7d8eeb5d3c7784ae67e724" +dependencies = [ + "deunicode", + "wasm-bindgen", +] + +[[package]] +name = "smallvec" +version = "1.13.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67" + +[[package]] +name = "socket2" +version = "0.5.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e22376abed350d73dd1cd119b57ffccad95b4e585a7cda43e286245ce23c0678" +dependencies = [ + "libc", + "windows-sys 0.52.0", +] + +[[package]] +name = "softbuffer" +version = "0.4.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "18051cdd562e792cad055119e0cdb2cfc137e44e3987532e0f9659a77931bb08" +dependencies = [ + "bytemuck", + "cfg_aliases", + "core-graphics", + "foreign-types 0.5.0", + "js-sys", + "log 0.4.27", + "objc2 0.5.2", + "objc2-foundation 0.2.2", + "objc2-quartz-core 0.2.2", + "raw-window-handle", + "redox_syscall", + "wasm-bindgen", + "web-sys", + "windows-sys 0.59.0", +] + +[[package]] +name = "soup3" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "471f924a40f31251afc77450e781cb26d55c0b650842efafc9c6cbd2f7cc4f9f" +dependencies = [ + "futures-channel", + "gio", + "glib", + "libc", + "soup3-sys", +] + +[[package]] +name = "soup3-sys" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7ebe8950a680a12f24f15ebe1bf70db7af98ad242d9db43596ad3108aab86c27" +dependencies = [ + "gio-sys", + "glib-sys", + "gobject-sys", + "libc", + "system-deps", +] + +[[package]] +name = "spin" +version = "0.9.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6980e8d7511241f8acf4aebddbb1ff938df5eebe98691418c4468d0b72a96a67" + +[[package]] +name = "stable_deref_trait" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a8f112729512f8e442d81f95a8a7ddf2b7c6b8a1a6f509a95864142b30cab2d3" + +[[package]] +name = "stacker" +version = "0.1.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cddb07e32ddb770749da91081d8d0ac3a16f1a569a18b20348cd371f5dead06b" +dependencies = [ + "cc", + "cfg-if", + "libc", + "psm", + "windows-sys 0.59.0", +] + +[[package]] +name = "static_assertions" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f" + +[[package]] +name = "strict-num" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6637bab7722d379c8b41ba849228d680cc12d0a45ba1fa2b48f2a30577a06731" +dependencies = [ + "float-cmp", +] + +[[package]] +name = "string_cache" +version = "0.8.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f91138e76242f575eb1d3b38b4f1362f10d3a43f47d182a5b359af488a02293b" +dependencies = [ + "new_debug_unreachable", + "once_cell", + "parking_lot", + "phf_shared 0.10.0", + "precomputed-hash", + "serde", +] + +[[package]] +name = "string_cache_codegen" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6bb30289b722be4ff74a408c3cc27edeaad656e06cb1fe8fa9231fa59c728988" +dependencies = [ + "phf_generator 0.10.0", + "phf_shared 0.10.0", + "proc-macro2", + "quote", +] + +[[package]] +name = "strsim" +version = "0.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f" + +[[package]] +name = "strum" +version = "0.26.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8fec0f0aef304996cf250b31b5a10dee7980c85da9d759361292b8bca5a18f06" +dependencies = [ + "strum_macros 0.26.4", +] + +[[package]] +name = "strum" +version = "0.27.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f64def088c51c9510a8579e3c5d67c65349dcf755e5479ad3d010aa6454e2c32" +dependencies = [ + "strum_macros 0.27.1", +] + +[[package]] +name = "strum_macros" +version = "0.26.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4c6bee85a5a24955dc440386795aa378cd9cf82acd5f764469152d2270e581be" +dependencies = [ + "heck 0.5.0", + "proc-macro2", + "quote", + "rustversion", + "syn 2.0.93", +] + +[[package]] +name = "strum_macros" +version = "0.27.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c77a8c5abcaf0f9ce05d62342b7d298c346515365c36b673df4ebe3ced01fde8" +dependencies = [ + "heck 0.5.0", + "proc-macro2", + "quote", + "rustversion", + "syn 2.0.93", +] + +[[package]] +name = "subsetter" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09eab8a83bff89ba2200bd4c59be45c7c787f988431b936099a5a266c957f2f9" + +[[package]] +name = "subtle" +version = "2.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292" + +[[package]] +name = "svg2pdf" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ba36b330062be8497fd96597227a757b621b86c4d24d164b06e4522b52b3693e" +dependencies = [ + "image 0.24.9", + "miniz_oxide 0.7.4", + "once_cell", + "pdf-writer", + "resvg", + "tiny-skia", + "usvg", +] + +[[package]] +name = "svgtypes" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6e44e288cd960318917cbd540340968b90becc8bc81f171345d706e7a89d9d70" +dependencies = [ + "kurbo", + "siphasher 0.3.11", +] + +[[package]] +name = "swift-rs" +version = "1.0.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4057c98e2e852d51fdcfca832aac7b571f6b351ad159f9eda5db1655f8d0c4d7" +dependencies = [ + "base64 0.21.7", + "serde", + "serde_json", +] + +[[package]] +name = "syn" +version = "1.0.109" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "syn" +version = "2.0.93" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9c786062daee0d6db1132800e623df74274a0a87322d8e183338e01b3d98d058" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "sync_wrapper" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2047c6ded9c721764247e62cd3b03c09ffc529b2ba5b10ec482ae507a4a70160" + +[[package]] +name = "sync_wrapper" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0bf256ce5efdfa370213c1dabab5935a12e49f2c58d15e9eac2870d3b4f27263" +dependencies = [ + "futures-core", +] + +[[package]] +name = "synstructure" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c8af7666ab7b6390ab78131fb5b0fce11d6b7a6951602017c35fa82800708971" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.93", +] + +[[package]] +name = "syntect" +version = "5.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "874dcfa363995604333cf947ae9f751ca3af4522c60886774c4963943b4746b1" +dependencies = [ + "bincode", + "bitflags 1.3.2", + "fancy-regex", + "flate2", + "fnv", + "once_cell", + "onig", + "plist", + "regex-syntax 0.8.5", + "serde", + "serde_derive", + "serde_json", + "thiserror 1.0.69", + "walkdir", + "yaml-rust", +] + +[[package]] +name = "sys-locale" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8eab9a99a024a169fe8a903cf9d4a3b3601109bcc13bd9e3c6fff259138626c4" +dependencies = [ + "libc", +] + +[[package]] +name = "sysinfo" +version = "0.29.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cd727fc423c2060f6c92d9534cef765c65a6ed3f428a03d7def74a8c4348e666" +dependencies = [ + "cfg-if", + "core-foundation-sys", + "libc", + "ntapi", + "once_cell", + "rayon", + "winapi", +] + +[[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" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3c879d448e9d986b661742763247d3693ed13609438cf3d006f51f5368a5ba6b" +dependencies = [ + "bitflags 2.9.1", + "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", +] + +[[package]] +name = "system-configuration-sys" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e1d1b10ced5ca923a1fcb8d03e96b8d3268065d724548c0211415ff6ac6bac4" +dependencies = [ + "core-foundation-sys", + "libc", +] + +[[package]] +name = "system-deps" +version = "6.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a3e535eb8dded36d55ec13eddacd30dec501792ff23a0b1682c38601b8cf2349" +dependencies = [ + "cfg-expr", + "heck 0.5.0", + "pkg-config", + "toml", + "version-compare", +] + +[[package]] +name = "tao" +version = "0.34.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "49c380ca75a231b87b6c9dd86948f035012e7171d1a7c40a9c2890489a7ffd8a" +dependencies = [ + "bitflags 2.9.1", + "core-foundation 0.10.1", + "core-graphics", + "crossbeam-channel", + "dispatch", + "dlopen2", + "dpi", + "gdkwayland-sys", + "gdkx11-sys", + "gtk", + "jni", + "lazy_static", + "libc", + "log 0.4.27", + "ndk", + "ndk-context", + "ndk-sys", + "objc2 0.6.1", + "objc2-app-kit", + "objc2-foundation 0.3.1", + "once_cell", + "parking_lot", + "raw-window-handle", + "scopeguard", + "tao-macros", + "unicode-segmentation", + "url 2.5.4", + "windows", + "windows-core 0.61.2", + "windows-version", + "x11-dl", +] + +[[package]] +name = "tao-macros" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f4e16beb8b2ac17db28eab8bca40e62dbfbb34c0fcdc6d9826b11b7b5d047dfd" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.93", +] + +[[package]] +name = "tap" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "55937e1799185b12863d447f42597ed69d9928686b8d88a1df17376a097d8369" + +[[package]] +name = "target-lexicon" +version = "0.12.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "61c41af27dd6d1e27b1b16b489db798443478cef1f06a660c96db617ba5de3b1" + +[[package]] +name = "tauri" +version = "2.6.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "124e129c9c0faa6bec792c5948c89e86c90094133b0b9044df0ce5f0a8efaa0d" +dependencies = [ + "anyhow", + "bytes", + "dirs 6.0.0", + "dunce", + "embed_plist", + "getrandom 0.3.3", + "glob", + "gtk", + "heck 0.5.0", + "http 1.3.1", + "http-range", + "jni", + "libc", + "log 0.4.27", + "mime 0.3.17", + "muda", + "objc2 0.6.1", + "objc2-app-kit", + "objc2-foundation 0.3.1", + "objc2-ui-kit", + "percent-encoding 2.3.1", + "plist", + "raw-window-handle", + "reqwest 0.12.20", + "serde", + "serde_json", + "serde_repr", + "serialize-to-javascript", + "swift-rs", + "tauri-build", + "tauri-macros", + "tauri-runtime", + "tauri-runtime-wry", + "tauri-utils", + "thiserror 2.0.12", + "tokio", + "tracing", + "tray-icon", + "url 2.5.4", + "urlpattern", + "webkit2gtk", + "webview2-com", + "window-vibrancy", + "windows", +] + +[[package]] +name = "tauri-build" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "12f025c389d3adb83114bec704da973142e82fc6ec799c7c750c5e21cefaec83" +dependencies = [ + "anyhow", + "cargo_toml", + "dirs 6.0.0", + "glob", + "heck 0.5.0", + "json-patch", + "schemars", + "semver", + "serde", + "serde_json", + "tauri-utils", + "tauri-winres", + "toml", + "walkdir", +] + +[[package]] +name = "tauri-codegen" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f5df493a1075a241065bc865ed5ef8d0fbc1e76c7afdc0bf0eccfaa7d4f0e406" +dependencies = [ + "base64 0.22.1", + "brotli", + "ico", + "json-patch", + "plist", + "png", + "proc-macro2", + "quote", + "semver", + "serde", + "serde_json", + "sha2", + "syn 2.0.93", + "tauri-utils", + "thiserror 2.0.12", + "time 0.3.37", + "url 2.5.4", + "uuid", + "walkdir", +] + +[[package]] +name = "tauri-macros" +version = "2.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f237fbea5866fa5f2a60a21bea807a2d6e0379db070d89c3a10ac0f2d4649bbc" +dependencies = [ + "heck 0.5.0", + "proc-macro2", + "quote", + "syn 2.0.93", + "tauri-codegen", + "tauri-utils", +] + +[[package]] +name = "tauri-plugin" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d9a0bd00bf1930ad1a604d08b0eb6b2a9c1822686d65d7f4731a7723b8901d3" +dependencies = [ + "anyhow", + "glob", + "plist", + "schemars", + "serde", + "serde_json", + "tauri-utils", + "toml", + "walkdir", +] + +[[package]] +name = "tauri-plugin-clipboard-manager" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "adddd9e9275b20e77af3061d100a25a884cced3c4c9ef680bd94dd0f7e26c1ca" +dependencies = [ + "arboard", + "log 0.4.27", + "serde", + "serde_json", + "tauri", + "tauri-plugin", + "thiserror 2.0.12", +] + +[[package]] +name = "tauri-plugin-deep-link" +version = "2.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ab261eb006db10ab478e3fbb5a4e2692df3f7eb3e28300ee2b64428979167ed0" +dependencies = [ + "dunce", + "rust-ini", + "serde", + "serde_json", + "tauri", + "tauri-plugin", + "tauri-utils", + "thiserror 2.0.12", + "tracing", + "url 2.5.4", + "windows-registry", + "windows-result", +] + +[[package]] +name = "tauri-plugin-devtools" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e5cd17faa36a826e5686bd0fda5bc3f4c903682263f00cd50f2f778fc4bb866" +dependencies = [ + "async-stream", + "bytes", + "cocoa", + "colored", + "devtools-core", + "futures", + "local-ip-address 0.5.7", + "log 0.4.27", + "objc", + "serde", + "serde_json", + "swift-rs", + "tauri", + "tauri-plugin", + "tokio", + "tonic", + "tonic-health", + "tracing", + "tracing-subscriber", +] + +[[package]] +name = "tauri-plugin-dialog" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1aefb14219b492afb30b12647b5b1247cadd2c0603467310c36e0f7ae1698c28" +dependencies = [ + "log 0.4.27", + "raw-window-handle", + "rfd", + "serde", + "serde_json", + "tauri", + "tauri-plugin", + "tauri-plugin-fs", + "thiserror 2.0.12", + "url 2.5.4", +] + +[[package]] +name = "tauri-plugin-fs" +version = "2.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c341290d31991dbca38b31d412c73dfbdb070bb11536784f19dd2211d13b778f" +dependencies = [ + "anyhow", + "dunce", + "glob", + "percent-encoding 2.3.1", + "schemars", + "serde", + "serde_json", + "serde_repr", + "tauri", + "tauri-plugin", + "tauri-utils", + "thiserror 2.0.12", + "toml", + "url 2.5.4", +] + +[[package]] +name = "tauri-plugin-http" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b0c1a38da944b357ffa23bafd563b1579f18e6fbd118fcd84769406d35dcc5c7" +dependencies = [ + "bytes", + "cookie_store", + "data-url", + "http 1.3.1", + "regex", + "reqwest 0.12.20", + "schemars", + "serde", + "serde_json", + "tauri", + "tauri-plugin", + "tauri-plugin-fs", + "thiserror 2.0.12", + "tokio", + "url 2.5.4", + "urlpattern", +] + +[[package]] +name = "tauri-plugin-os" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "05bccb4c6de4299beec5a9b070878a01bce9e2c945aa7a75bcea38bcba4c675d" +dependencies = [ + "gethostname 1.0.2", + "log 0.4.27", + "os_info", + "serde", + "serde_json", + "serialize-to-javascript", + "sys-locale", + "tauri", + "tauri-plugin", + "thiserror 2.0.12", +] + +[[package]] +name = "tauri-plugin-process" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7461c622a5ea00eb9cd9f7a08dbd3bf79484499fd5c21aa2964677f64ca651ab" +dependencies = [ + "tauri", + "tauri-plugin", +] + +[[package]] +name = "tauri-plugin-shell" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2b9ffadec5c3523f11e8273465cacb3d86ea7652a28e6e2a2e9b5c182f791d25" +dependencies = [ + "encoding_rs", + "log 0.4.27", + "open", + "os_pipe", + "regex", + "schemars", + "serde", + "serde_json", + "shared_child", + "tauri", + "tauri-plugin", + "thiserror 2.0.12", + "tokio", +] + +[[package]] +name = "tauri-plugin-window-state" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5a3d22b21b9cec73601b512a868f7c74f93c044d44fd6ca1c84e9d6afb6b1559" +dependencies = [ + "bitflags 2.9.1", + "log 0.4.27", + "serde", + "serde_json", + "tauri", + "tauri-plugin", + "thiserror 2.0.12", +] + +[[package]] +name = "tauri-runtime" +version = "2.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9e7bb73d1bceac06c20b3f755b2c8a2cb13b20b50083084a8cf3700daf397ba4" +dependencies = [ + "cookie", + "dpi", + "gtk", + "http 1.3.1", + "jni", + "objc2 0.6.1", + "objc2-ui-kit", + "raw-window-handle", + "serde", + "serde_json", + "tauri-utils", + "thiserror 2.0.12", + "url 2.5.4", + "windows", +] + +[[package]] +name = "tauri-runtime-wry" +version = "2.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "902b5aa9035e16f342eb64f8bf06ccdc2808e411a2525ed1d07672fa4e780bad" +dependencies = [ + "gtk", + "http 1.3.1", + "jni", + "log 0.4.27", + "objc2 0.6.1", + "objc2-app-kit", + "objc2-foundation 0.3.1", + "once_cell", + "percent-encoding 2.3.1", + "raw-window-handle", + "softbuffer", + "tao", + "tauri-runtime", + "tauri-utils", + "tracing", + "url 2.5.4", + "webkit2gtk", + "webview2-com", + "windows", + "wry", +] + +[[package]] +name = "tauri-utils" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "41743bbbeb96c3a100d234e5a0b60a46d5aa068f266160862c7afdbf828ca02e" +dependencies = [ + "anyhow", + "brotli", + "cargo_metadata", + "ctor", + "dunce", + "glob", + "html5ever 0.29.1", + "http 1.3.1", + "infer", + "json-patch", + "kuchikiki", + "log 0.4.27", + "memchr", + "phf 0.11.2", + "proc-macro2", + "quote", + "regex", + "schemars", + "semver", + "serde", + "serde-untagged", + "serde_json", + "serde_with", + "swift-rs", + "thiserror 2.0.12", + "toml", + "url 2.5.4", + "urlpattern", + "uuid", + "walkdir", +] + +[[package]] +name = "tauri-winres" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e8d321dbc6f998d825ab3f0d62673e810c861aac2d0de2cc2c395328f1d113b4" +dependencies = [ + "embed-resource", + "indexmap 2.7.0", + "toml", +] + +[[package]] +name = "tempfile" +version = "3.20.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e8a64e3985349f2441a1a9ef0b853f869006c3855f2cda6862a94d26ebb9d6a1" +dependencies = [ + "fastrand", + "getrandom 0.3.3", + "once_cell", + "rustix 1.0.7", + "windows-sys 0.59.0", +] + +[[package]] +name = "tendril" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d24a120c5fc464a3458240ee02c299ebcb9d67b5249c8848b09d639dca8d7bb0" +dependencies = [ + "futf", + "mac", + "utf-8", +] + +[[package]] +name = "terminal_size" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5352447f921fda68cf61b4101566c0bdb5104eff6804d0678e5227580ab6a4e9" +dependencies = [ + "rustix 0.38.44", + "windows-sys 0.59.0", +] + +[[package]] +name = "text-splitter" +version = "0.27.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9f7e97f5863248f7d07896a1816bd4110cb1b0b122741f157d702121a270bf33" +dependencies = [ + "ahash 0.8.12", + "auto_enums", + "either", + "icu_provider 2.0.0", + "icu_segmenter 2.0.0", + "itertools 0.14.0", + "memchr", + "strum 0.27.1", + "thiserror 2.0.12", +] + +[[package]] +name = "thiserror" +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.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "567b8a2dae586314f7be2a752ec7474332959c6460e02bde30d702a66d488708" +dependencies = [ + "thiserror-impl 2.0.12", +] + +[[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.93", +] + +[[package]] +name = "thiserror-impl" +version = "2.0.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f7cf42b4507d8ea322120659672cf1b9dbb93f8f2d4ecfd6e51350ff5b17a1d" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.93", +] + +[[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 = "tiff" +version = "0.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ba1310fcea54c6a9a4fd1aad794ecc02c31682f6bfbecdf460bf19533eed1e3e" +dependencies = [ + "flate2", + "jpeg-decoder", + "weezl", +] + +[[package]] +name = "time" +version = "0.1.45" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1b797afad3f312d1c66a56d11d0316f916356d11bd158fbc6ca6389ff6bf805a" +dependencies = [ + "libc", + "wasi 0.10.0+wasi-snapshot-preview1", + "winapi", +] + +[[package]] +name = "time" +version = "0.3.37" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "35e7868883861bd0e56d9ac6efcaaca0d6d5d82a2a7ec8209ff492c07cf37b21" +dependencies = [ + "deranged", + "itoa", + "num-conv", + "powerfmt", + "serde", + "time-core", + "time-macros", +] + +[[package]] +name = "time-core" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ef927ca75afb808a4d64dd374f00a2adf8d0fcff8e7b184af886c3c87ec4a3f3" + +[[package]] +name = "time-macros" +version = "0.2.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2834e6017e3e5e4b9834939793b282bc03b37a3336245fa820e35e233e2a85de" +dependencies = [ + "num-conv", + "time-core", +] + +[[package]] +name = "tiny-keccak" +version = "2.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2c9d3793400a45f954c52e73d068316d76b6f4e36977e3fcebb13a2721e80237" +dependencies = [ + "crunchy", +] + +[[package]] +name = "tiny-skia" +version = "0.11.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "83d13394d44dae3207b52a326c0c85a8bf87f1541f23b0d143811088497b09ab" +dependencies = [ + "arrayref", + "arrayvec", + "bytemuck", + "cfg-if", + "log 0.4.27", + "png", + "tiny-skia-path", +] + +[[package]] +name = "tiny-skia-path" +version = "0.11.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9c9e7fc0c2e86a30b117d0462aa261b72b7a99b7ebd7deb3a14ceda95c5bdc93" +dependencies = [ + "arrayref", + "bytemuck", + "strict-num", +] + +[[package]] +name = "tiny_http" +version = "0.6.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2e22cb179b63e5fc2d0b5be237dc107da072e2407809ac70a8ce85b93fe8f562" +dependencies = [ + "ascii", + "chrono", + "chunked_transfer", + "log 0.4.27", + "url 1.7.2", +] + +[[package]] +name = "tinystr" +version = "0.7.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9117f5d4db391c1cf6927e7bea3db74b9a1c1add8f7eda9ffd5364f40f57b82f" +dependencies = [ + "displaydoc", + "serde", + "zerovec 0.10.4", +] + +[[package]] +name = "tinystr" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5d4f6d1145dcb577acf783d4e601bc1d76a13337bb54e6233add580b07344c8b" +dependencies = [ + "displaydoc", + "zerovec 0.11.2", +] + +[[package]] +name = "tinyvec" +version = "1.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09b3661f17e86524eccd4371ab0429194e0d7c008abb45f7a7495b1719463c71" +dependencies = [ + "tinyvec_macros", +] + +[[package]] +name = "tinyvec_macros" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" + +[[package]] +name = "tokio" +version = "1.45.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "75ef51a33ef1da925cea3e4eb122833cb377c61439ca401b770f54902b806779" +dependencies = [ + "backtrace", + "bytes", + "libc", + "mio", + "pin-project-lite", + "signal-hook-registry", + "socket2", + "tokio-macros", + "tracing", + "windows-sys 0.52.0", +] + +[[package]] +name = "tokio-io-timeout" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "30b74022ada614a1b4834de765f9bb43877f910cc8ce4be40e89042c9223a8bf" +dependencies = [ + "pin-project-lite", + "tokio", +] + +[[package]] +name = "tokio-macros" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6e06d43f1345a3bcd39f6a56dbb7dcab2ba47e68e8ac134855e7e2bdbaf8cab8" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.93", +] + +[[package]] +name = "tokio-native-tls" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bbae76ab933c85776efabc971569dd6119c580d8f5d448769dec1764bf796ef2" +dependencies = [ + "native-tls", + "tokio", +] + +[[package]] +name = "tokio-rustls" +version = "0.26.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e727b36a1a0e8b74c376ac2211e40c2c8af09fb4013c60d910495810f008e9b" +dependencies = [ + "rustls", + "tokio", +] + +[[package]] +name = "tokio-stream" +version = "0.1.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eca58d7bba4a75707817a2c44174253f9236b2d5fbd055602e9d5c07c139a047" +dependencies = [ + "futures-core", + "pin-project-lite", + "tokio", +] + +[[package]] +name = "tokio-util" +version = "0.7.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d7fcaa8d55a2bdd6b83ace262b016eca0d79ee02818c5c1bcdf0305114081078" +dependencies = [ + "bytes", + "futures-core", + "futures-sink", + "pin-project-lite", + "tokio", +] + +[[package]] +name = "toml" +version = "0.8.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a1ed1f98e3fdc28d6d910e6737ae6ab1a93bf1985935a1193e68f93eeb68d24e" +dependencies = [ + "serde", + "serde_spanned", + "toml_datetime", + "toml_edit 0.22.24", +] + +[[package]] +name = "toml_datetime" +version = "0.6.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0dd7358ecb8fc2f8d014bf86f6f638ce72ba252a2c3a2572f2a795f1d23efb41" +dependencies = [ + "serde", +] + +[[package]] +name = "toml_edit" +version = "0.19.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1b5bb770da30e5cbfde35a2d7b9b8a2c4b8ef89548a7a6aeab5c9a576e3e7421" +dependencies = [ + "indexmap 2.7.0", + "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 = "70f427fce4d84c72b5b732388bf4a9f4531b53f74e2887e3ecb2481f68f66d81" +dependencies = [ + "indexmap 2.7.0", + "toml_datetime", + "winnow 0.5.40", +] + +[[package]] +name = "toml_edit" +version = "0.22.24" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "17b4795ff5edd201c7cd6dca065ae59972ce77d1b80fa0a84d94950ece7d1474" +dependencies = [ + "indexmap 2.7.0", + "serde", + "serde_spanned", + "toml_datetime", + "winnow 0.7.11", +] + +[[package]] +name = "tonic" +version = "0.10.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d560933a0de61cf715926b9cac824d4c883c2c43142f787595e48280c40a1d0e" +dependencies = [ + "async-stream", + "async-trait", + "axum", + "base64 0.21.7", + "bytes", + "h2 0.3.26", + "http 0.2.12", + "http-body 0.4.6", + "hyper 0.14.32", + "hyper-timeout", + "percent-encoding 2.3.1", + "pin-project", + "prost", + "tokio", + "tokio-stream", + "tower 0.4.13", + "tower-layer", + "tower-service", + "tracing", +] + +[[package]] +name = "tonic-health" +version = "0.10.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f80db390246dfb46553481f6024f0082ba00178ea495dbb99e70ba9a4fafb5e1" +dependencies = [ + "async-stream", + "prost", + "tokio", + "tokio-stream", + "tonic", +] + +[[package]] +name = "tonic-web" +version = "0.10.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0fddb2a37b247e6adcb9f239f4e5cefdcc5ed526141a416b943929f13aea2cce" +dependencies = [ + "base64 0.21.7", + "bytes", + "http 0.2.12", + "http-body 0.4.6", + "hyper 0.14.32", + "pin-project", + "tokio-stream", + "tonic", + "tower-http 0.4.4", + "tower-layer", + "tower-service", + "tracing", +] + +[[package]] +name = "tower" +version = "0.4.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b8fa9be0de6cf49e536ce1851f987bd21a43b771b09473c3549a6c853db37c1c" +dependencies = [ + "futures-core", + "futures-util", + "indexmap 1.9.3", + "pin-project", + "pin-project-lite", + "rand 0.8.5", + "slab", + "tokio", + "tokio-util", + "tower-layer", + "tower-service", + "tracing", +] + +[[package]] +name = "tower" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d039ad9159c98b70ecfd540b2573b97f7f52c3e8d9f8ad57a24b916a536975f9" +dependencies = [ + "futures-core", + "futures-util", + "pin-project-lite", + "sync_wrapper 1.0.2", + "tokio", + "tower-layer", + "tower-service", +] + +[[package]] +name = "tower-http" +version = "0.4.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "61c5bb1d698276a2443e5ecfabc1008bf15a36c12e6a7176e7bf089ea9131140" +dependencies = [ + "bitflags 2.9.1", + "bytes", + "futures-core", + "futures-util", + "http 0.2.12", + "http-body 0.4.6", + "http-range-header", + "pin-project-lite", + "tower-layer", + "tower-service", +] + +[[package]] +name = "tower-http" +version = "0.6.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "adc82fd73de2a9722ac5da747f12383d2bfdb93591ee6c58486e0097890f05f2" +dependencies = [ + "bitflags 2.9.1", + "bytes", + "futures-util", + "http 1.3.1", + "http-body 1.0.1", + "iri-string", + "pin-project-lite", + "tower 0.5.2", + "tower-layer", + "tower-service", +] + +[[package]] +name = "tower-layer" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "121c2a6cda46980bb0fcd1647ffaf6cd3fc79a013de288782836f6df9c48780e" + +[[package]] +name = "tower-service" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8df9b6e13f2d32c91b9bd719c00d1958837bc7dec474d94952798cc8e69eeec3" + +[[package]] +name = "tracing" +version = "0.1.41" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "784e0ac535deb450455cbfa28a6f0df145ea1bb7ae51b821cf5e7927fdcfbdd0" +dependencies = [ + "log 0.4.27", + "pin-project-lite", + "tracing-attributes", + "tracing-core", +] + +[[package]] +name = "tracing-attributes" +version = "0.1.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "81383ab64e72a7a8b8e13130c49e3dab29def6d0c7d76a03087b3cf71c5c6903" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.93", +] + +[[package]] +name = "tracing-core" +version = "0.1.33" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e672c95779cf947c5311f83787af4fa8fffd12fb27e4993211a84bdfd9610f9c" +dependencies = [ + "once_cell", + "valuable", +] + +[[package]] +name = "tracing-log" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ee855f1f400bd0e5c02d150ae5de3840039a3f54b025156404e34c23c03f47c3" +dependencies = [ + "log 0.4.27", + "once_cell", + "tracing-core", +] + +[[package]] +name = "tracing-subscriber" +version = "0.3.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e8189decb5ac0fa7bc8b96b7cb9b2701d60d48805aca84a238004d665fcc4008" +dependencies = [ + "matchers", + "nu-ansi-term", + "once_cell", + "regex", + "sharded-slab", + "smallvec", + "thread_local", + "tracing", + "tracing-core", + "tracing-log", +] + +[[package]] +name = "traitobject" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "04a79e25382e2e852e8da874249358d382ebaf259d0d34e75d8db16a7efabbc7" + +[[package]] +name = "tray-icon" +version = "0.21.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2da75ec677957aa21f6e0b361df0daab972f13a5bee3606de0638fd4ee1c666a" +dependencies = [ + "crossbeam-channel", + "dirs 6.0.0", + "libappindicator", + "muda", + "objc2 0.6.1", + "objc2-app-kit", + "objc2-core-foundation", + "objc2-core-graphics", + "objc2-foundation 0.3.1", + "once_cell", + "png", + "serde", + "thiserror 2.0.12", + "windows-sys 0.59.0", +] + +[[package]] +name = "tree_magic_mini" +version = "3.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aac5e8971f245c3389a5a76e648bfc80803ae066a1243a75db0064d7c1129d63" +dependencies = [ + "fnv", + "memchr", + "nom", + "once_cell", + "petgraph", +] + +[[package]] +name = "trim-in-place" +version = "0.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "343e926fc669bc8cde4fa3129ab681c63671bae288b1f1081ceee6d9d37904fc" + +[[package]] +name = "try-lock" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e421abadd41a4225275504ea4d6566923418b7f05506fbc9c0fe86ba7396114b" + +[[package]] +name = "ttf-parser" +version = "0.20.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "17f77d76d837a7830fe1d4f12b7b4ba4192c1888001c7164257e4bc6d21d96b4" + +[[package]] +name = "two-face" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "37bed2135b2459c7eefba72c906d374697eb15949c205f2f124e3636a46b5eeb" +dependencies = [ + "once_cell", + "serde", + "syntect", +] + +[[package]] +name = "twoway" +version = "0.1.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "59b11b2b5241ba34be09c3cc85a36e56e48f9888862e19cedf23336d35316ed1" +dependencies = [ + "memchr", +] + +[[package]] +name = "typeable" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1410f6f91f21d1612654e7cc69193b0334f909dcf2c790c4826254fbb86f8887" + +[[package]] +name = "typed-arena" +version = "2.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6af6ae20167a9ece4bcb41af5b80f8a1f1df981f6391189ce00fd257af04126a" + +[[package]] +name = "typeid" +version = "1.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bc7d623258602320d5c55d1bc22793b57daff0ec7efc270ea7d55ce1d5f5471c" + +[[package]] +name = "typemap" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "653be63c80a3296da5551e1bfd2cca35227e13cdd08c6668903ae2f4f77aa1f6" +dependencies = [ + "unsafe-any", +] + +[[package]] +name = "typenum" +version = "1.17.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "42ff0bf0c66b8238c6f3b578df37d0b7848e55df8577b3f74f92a69acceeb825" + +[[package]] +name = "typst" +version = "0.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "12492297d20937494f0143ae50ef339e5fd3d927b4096af1c52fe73fb9c5fa9a" +dependencies = [ + "az", + "bitflags 2.9.1", + "chinese-number", + "ciborium", + "comemo", + "csv", + "ecow", + "fontdb", + "hayagriva", + "hypher", + "icu_properties", + "icu_provider 1.5.0", + "icu_provider_adapters", + "icu_provider_blob", + "icu_segmenter 1.5.0", + "if_chain", + "image 0.24.9", + "indexmap 2.7.0", + "kamadak-exif", + "kurbo", + "lipsum", + "log 0.4.27", + "once_cell", + "palette", + "phf 0.11.2", + "png", + "portable-atomic", + "qcms", + "rayon", + "regex", + "roxmltree 0.19.0", + "rustybuzz", + "serde", + "serde_json", + "serde_yaml", + "siphasher 1.0.1", + "smallvec", + "stacker", + "syntect", + "time 0.3.37", + "toml", + "ttf-parser", + "two-face", + "typed-arena", + "typst-assets", + "typst-macros", + "typst-syntax", + "typst-timing", + "unicode-bidi", + "unicode-math-class", + "unicode-script", + "unicode-segmentation", + "usvg", + "wasmi", ] [[package]] -name = "tauri-winres" -version = "0.1.1" +name = "typst-assets" +version = "0.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2b3061f8d268e8eec7481c9ab24540455cb4912983c49aae38fa6e8bf8ef4d9c" + +[[package]] +name = "typst-macros" +version = "0.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5993dc129e544393574288923d1ec447c857f3f644187f4fbf7d9a875fbfc4fb" +checksum = "e5a0fdfd46b4920b0f8e4215e5b8438c737e8bc3498a681ea59b0130228363fc" dependencies = [ - "embed-resource", - "toml 0.7.8", + "heck 0.4.1", + "proc-macro2", + "quote", + "syn 2.0.93", ] [[package]] -name = "tempfile" -version = "3.14.0" +name = "typst-pdf" +version = "0.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "28cce251fcbc87fac86a866eeb0d6c2d536fc16d06f184bb61aeae11aa4cee0c" +checksum = "54f743b64330e576d31b2108626490ae1fbd7fb4bb28307536ceff3227a4e0d5" dependencies = [ - "cfg-if", - "fastrand", + "base64 0.22.1", + "bytemuck", + "comemo", + "ecow", + "image 0.24.9", + "miniz_oxide 0.7.4", "once_cell", - "rustix", - "windows-sys 0.59.0", + "pdf-writer", + "subsetter", + "svg2pdf", + "ttf-parser", + "typst", + "typst-assets", + "typst-macros", + "typst-timing", + "unicode-properties", + "unscanny", + "xmp-writer", ] [[package]] -name = "tendril" -version = "0.4.3" +name = "typst-syntax" +version = "0.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d24a120c5fc464a3458240ee02c299ebcb9d67b5249c8848b09d639dca8d7bb0" +checksum = "e3db69f2f41613b1ff6edbec44fd7dc524137f099ee36c46f560cedeaadb40c4" dependencies = [ - "futf", - "mac", - "utf-8", + "comemo", + "ecow", + "once_cell", + "serde", + "unicode-ident", + "unicode-math-class", + "unicode-script", + "unicode-segmentation", + "unscanny", ] [[package]] -name = "terminal_size" -version = "0.4.1" +name = "typst-timing" +version = "0.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5352447f921fda68cf61b4101566c0bdb5104eff6804d0678e5227580ab6a4e9" +checksum = "5b58e17192bcacb2a39aace6d3eece70f008b2949ce384ac501a58357fafee67" dependencies = [ - "rustix", - "windows-sys 0.59.0", + "parking_lot", + "serde", + "serde_json", + "typst-syntax", ] [[package]] -name = "thin-slice" -version = "0.1.1" +name = "uds_windows" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8eaa81235c7058867fa8c0e7314f33dcce9c215f535d1913822a2b3f5e289f3c" +checksum = "89daebc3e6fd160ac4aa9fc8b3bf71e1f74fbf92367ae71fb83a037e8bf164b9" +dependencies = [ + "memoffset", + "tempfile", + "winapi", +] [[package]] -name = "thiserror" -version = "1.0.69" +name = "unic-char-property" +version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6aaf5339b578ea85b50e080feb250a3e8ae8cfcdff9a461c9ec2904bc923f52" +checksum = "a8c57a407d9b6fa02b4795eb81c5b6652060a15a7903ea981f3d723e6c0be221" dependencies = [ - "thiserror-impl", + "unic-char-range", ] [[package]] -name = "thiserror-impl" -version = "1.0.69" +name = "unic-char-range" +version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.93", -] +checksum = "0398022d5f700414f6b899e10b8348231abf9173fa93144cbc1a43b9793c1fbc" [[package]] -name = "thread_local" -version = "1.1.8" +name = "unic-common" +version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8b9ef9bad013ada3808854ceac7b46812a6465ba368859a37e2100283d2d719c" +checksum = "80d7ff825a6a654ee85a63e80f92f054f904f21e7d12da4e22f9834a4aaa35bc" + +[[package]] +name = "unic-langid" +version = "0.9.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a28ba52c9b05311f4f6e62d5d9d46f094bd6e84cb8df7b3ef952748d752a7d05" dependencies = [ - "cfg-if", - "once_cell", + "unic-langid-impl", ] [[package]] -name = "time" -version = "0.3.37" +name = "unic-langid-impl" +version = "0.9.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "35e7868883861bd0e56d9ac6efcaaca0d6d5d82a2a7ec8209ff492c07cf37b21" +checksum = "dce1bf08044d4b7a94028c93786f8566047edc11110595914de93362559bc658" dependencies = [ - "deranged", - "itoa 1.0.14", - "num-conv", - "powerfmt", "serde", - "time-core", - "time-macros", + "tinystr 0.8.1", ] [[package]] -name = "time-core" -version = "0.1.2" +name = "unic-ucd-ident" +version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ef927ca75afb808a4d64dd374f00a2adf8d0fcff8e7b184af886c3c87ec4a3f3" +checksum = "e230a37c0381caa9219d67cf063aa3a375ffed5bf541a452db16e744bdab6987" +dependencies = [ + "unic-char-property", + "unic-char-range", + "unic-ucd-version", +] [[package]] -name = "time-macros" -version = "0.2.19" +name = "unic-ucd-version" +version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2834e6017e3e5e4b9834939793b282bc03b37a3336245fa820e35e233e2a85de" +checksum = "96bd2f2237fe450fcd0a1d2f5f4e91711124f7857ba2e964247776ebeeb7b0c4" dependencies = [ - "num-conv", - "time-core", + "unic-common", ] [[package]] -name = "tinystr" -version = "0.7.6" +name = "unicase" +version = "1.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9117f5d4db391c1cf6927e7bea3db74b9a1c1add8f7eda9ffd5364f40f57b82f" +checksum = "7f4765f83163b74f957c797ad9253caf97f103fb064d3999aea9568d09fc8a33" dependencies = [ - "displaydoc", - "zerovec", + "version_check 0.1.5", ] [[package]] -name = "tokio" -version = "1.42.0" +name = "unicase" +version = "2.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5cec9b21b0450273377fc97bd4c33a8acffc8c996c987a7c5b319a0083707551" -dependencies = [ - "backtrace", - "bytes", - "libc", - "mio", - "pin-project-lite", - "socket2", - "tokio-macros", - "windows-sys 0.52.0", -] +checksum = "75b844d17643ee918803943289730bec8aac480150456169e647ed0b576ba539" [[package]] -name = "tokio-macros" -version = "2.4.0" +name = "unicode-bidi" +version = "0.3.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "693d596312e88961bc67d7f1f97af8a70227d9f90c31bba5806eec004978d752" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.93", -] +checksum = "5c1cb5db39152898a79168971543b1cb5020dff7fe43c8dc468b0885f5e29df5" [[package]] -name = "tokio-native-tls" -version = "0.3.1" +name = "unicode-bidi-mirroring" +version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bbae76ab933c85776efabc971569dd6119c580d8f5d448769dec1764bf796ef2" -dependencies = [ - "native-tls", - "tokio", -] +checksum = "56d12260fb92d52f9008be7e4bca09f584780eb2266dc8fecc6a192bec561694" [[package]] -name = "tokio-util" -version = "0.7.13" +name = "unicode-ccc" +version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d7fcaa8d55a2bdd6b83ace262b016eca0d79ee02818c5c1bcdf0305114081078" -dependencies = [ - "bytes", - "futures-core", - "futures-sink", - "pin-project-lite", - "tokio", -] +checksum = "cc2520efa644f8268dce4dcd3050eaa7fc044fca03961e9998ac7e2e92b77cf1" [[package]] -name = "toml" -version = "0.5.11" +name = "unicode-ident" +version = "1.0.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f4f7f0dd8d50a853a531c426359045b1998f04219d88799810762cd4ad314234" -dependencies = [ - "serde", -] +checksum = "adb9e6ca4f869e1180728b7950e35922a7fc6397f7b641499e8f3ef06e50dc83" [[package]] -name = "toml" -version = "0.7.8" +name = "unicode-math-class" +version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dd79e69d3b627db300ff956027cc6c3798cef26d22526befdfcd12feeb6d2257" -dependencies = [ - "serde", - "serde_spanned", - "toml_datetime", - "toml_edit 0.19.15", -] +checksum = "7d246cf599d5fae3c8d56e04b20eb519adb89a8af8d0b0fbcded369aa3647d65" [[package]] -name = "toml" -version = "0.8.19" +name = "unicode-normalization" +version = "0.1.24" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a1ed1f98e3fdc28d6d910e6737ae6ab1a93bf1985935a1193e68f93eeb68d24e" +checksum = "5033c97c4262335cded6d6fc3e5c18ab755e1a3dc96376350f3d8e9f009ad956" dependencies = [ - "serde", - "serde_spanned", - "toml_datetime", - "toml_edit 0.22.22", + "tinyvec", ] [[package]] -name = "toml_datetime" -version = "0.6.8" +name = "unicode-properties" +version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0dd7358ecb8fc2f8d014bf86f6f638ce72ba252a2c3a2572f2a795f1d23efb41" -dependencies = [ - "serde", -] +checksum = "e70f2a8b45122e719eb623c01822704c4e0907e7e426a05927e1a1cfff5b75d0" [[package]] -name = "toml_edit" -version = "0.19.15" +name = "unicode-script" +version = "0.5.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1b5bb770da30e5cbfde35a2d7b9b8a2c4b8ef89548a7a6aeab5c9a576e3e7421" -dependencies = [ - "indexmap 2.7.0", - "serde", - "serde_spanned", - "toml_datetime", - "winnow 0.5.40", -] +checksum = "9fb421b350c9aff471779e262955939f565ec18b86c15364e6bdf0d662ca7c1f" [[package]] -name = "toml_edit" -version = "0.22.22" +name = "unicode-segmentation" +version = "1.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ae48d6208a266e853d946088ed816055e556cc6028c5e8e2b84d9fa5dd7c7f5" -dependencies = [ - "indexmap 2.7.0", - "serde", - "serde_spanned", - "toml_datetime", - "winnow 0.6.20", -] +checksum = "f6ccf251212114b54433ec949fd6a7841275f9ada20dddd2f29e9ceea4501493" [[package]] -name = "tower-service" -version = "0.3.3" +name = "unicode-vo" +version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8df9b6e13f2d32c91b9bd719c00d1958837bc7dec474d94952798cc8e69eeec3" +checksum = "b1d386ff53b415b7fe27b50bb44679e2cc4660272694b7b6f3326d8480823a94" [[package]] -name = "tracing" -version = "0.1.41" +name = "unicode-width" +version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "784e0ac535deb450455cbfa28a6f0df145ea1bb7ae51b821cf5e7927fdcfbdd0" -dependencies = [ - "pin-project-lite", - "tracing-attributes", - "tracing-core", -] +checksum = "4a1a07cc7db3810833284e8d372ccdc6da29741639ecc70c9ec107df0fa6154c" [[package]] -name = "tracing-attributes" -version = "0.1.28" +name = "unicode_categories" +version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "395ae124c09f9e6918a2310af6038fba074bcf474ac352496d5910dd59a2226d" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.93", -] +checksum = "39ec24b3121d976906ece63c9daad25b85969647682eee313cb5779fdd69e14e" [[package]] -name = "tracing-core" -version = "0.1.33" +name = "unsafe-any" +version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e672c95779cf947c5311f83787af4fa8fffd12fb27e4993211a84bdfd9610f9c" +checksum = "f30360d7979f5e9c6e6cea48af192ea8fab4afb3cf72597154b8f08935bc9c7f" dependencies = [ - "once_cell", - "valuable", + "traitobject", ] [[package]] -name = "tracing-log" -version = "0.2.0" +name = "unsafe-libyaml" +version = "0.2.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ee855f1f400bd0e5c02d150ae5de3840039a3f54b025156404e34c23c03f47c3" -dependencies = [ - "log", - "once_cell", - "tracing-core", -] +checksum = "673aac59facbab8a9007c7f6108d11f63b603f7cabff99fabf650fea5c32b861" [[package]] -name = "tracing-subscriber" -version = "0.3.19" +name = "unscanny" +version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e8189decb5ac0fa7bc8b96b7cb9b2701d60d48805aca84a238004d665fcc4008" +checksum = "e9df2af067a7953e9c3831320f35c1cc0600c30d44d9f7a12b01db1cd88d6b47" + +[[package]] +name = "untrusted" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1" + +[[package]] +name = "ureq" +version = "2.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "02d1a66277ed75f640d608235660df48c8e3c19f3b4edb6a263315626cc3c01d" dependencies = [ - "matchers", - "nu-ansi-term", + "base64 0.22.1", + "flate2", + "log 0.4.27", "once_cell", - "regex", - "sharded-slab", - "smallvec", - "thread_local", - "tracing", - "tracing-core", - "tracing-log", + "rustls", + "rustls-pki-types", + "url 2.5.4", + "webpki-roots 0.26.11", ] [[package]] -name = "try-lock" -version = "0.2.5" +name = "url" +version = "1.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e421abadd41a4225275504ea4d6566923418b7f05506fbc9c0fe86ba7396114b" +checksum = "dd4e7c0d531266369519a4aa4f399d748bd37043b00bde1e4ff1f60a120b355a" +dependencies = [ + "idna 0.1.5", + "matches", + "percent-encoding 1.0.1", +] [[package]] -name = "typed-arena" -version = "2.0.2" +name = "url" +version = "2.5.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6af6ae20167a9ece4bcb41af5b80f8a1f1df981f6391189ce00fd257af04126a" +checksum = "32f8b686cadd1473f4bd0117a5d28d36b1ade384ea9b5069a1c40aefed7fda60" +dependencies = [ + "form_urlencoded", + "idna 1.0.3", + "percent-encoding 2.3.1", + "serde", +] [[package]] -name = "typenum" -version = "1.17.0" +name = "urlpattern" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "42ff0bf0c66b8238c6f3b578df37d0b7848e55df8577b3f74f92a69acceeb825" +checksum = "70acd30e3aa1450bc2eece896ce2ad0d178e9c079493819301573dae3c37ba6d" +dependencies = [ + "regex", + "serde", + "unic-ucd-ident", + "url 2.5.4", +] [[package]] -name = "unicode-ident" -version = "1.0.14" +name = "usvg" +version = "0.38.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "adb9e6ca4f869e1180728b7950e35922a7fc6397f7b641499e8f3ef06e50dc83" +checksum = "377f62b4a3c173de8654c1aa80ab1dac1154e6f13a779a9943e53780120d1625" +dependencies = [ + "base64 0.21.7", + "log 0.4.27", + "pico-args", + "usvg-parser", + "usvg-text-layout", + "usvg-tree", + "xmlwriter", +] [[package]] -name = "unicode-segmentation" -version = "1.12.0" +name = "usvg-parser" +version = "0.38.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f6ccf251212114b54433ec949fd6a7841275f9ada20dddd2f29e9ceea4501493" +checksum = "351a05e6f2023d6b4e946f734240a3927aefdcf930d7d42587a2c8a8869814b0" +dependencies = [ + "data-url", + "flate2", + "imagesize", + "kurbo", + "log 0.4.27", + "roxmltree 0.19.0", + "simplecss", + "siphasher 0.3.11", + "svgtypes", + "usvg-tree", +] [[package]] -name = "unicode_categories" -version = "0.1.1" +name = "usvg-text-layout" +version = "0.38.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "39ec24b3121d976906ece63c9daad25b85969647682eee313cb5779fdd69e14e" +checksum = "8c41888b9d5cf431fe852eaf9d047bbde83251b98f1749c2f08b1071e6db46e2" +dependencies = [ + "fontdb", + "kurbo", + "log 0.4.27", + "rustybuzz", + "unicode-bidi", + "unicode-script", + "unicode-vo", + "usvg-tree", +] [[package]] -name = "url" -version = "2.5.4" +name = "usvg-tree" +version = "0.38.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "32f8b686cadd1473f4bd0117a5d28d36b1ade384ea9b5069a1c40aefed7fda60" +checksum = "18863e0404ed153d6e56362c5b1146db9f4f262a3244e3cf2dbe7d8a85909f05" dependencies = [ - "form_urlencoded", - "idna", - "percent-encoding", - "serde", + "strict-num", + "svgtypes", + "tiny-skia-path", ] [[package]] @@ -4142,13 +8962,14 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f8c5f0a0af699448548ad1a2fbf920fb4bee257eae39953ba95cb84891a0446a" dependencies = [ "getrandom 0.2.15", + "serde", ] [[package]] name = "valuable" -version = "0.1.0" +version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "830b7e5d4d90034032940e4ace0d9a9a057e7a45cd94e6c007832e39edb82f6d" +checksum = "ba73ea9cf16a25df0c8caa16c51acb937d5712a8429db78a3ee29d5dcacd3a65" [[package]] name = "vcpkg" @@ -4158,15 +8979,15 @@ checksum = "accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426" [[package]] name = "version-compare" -version = "0.0.11" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1c18c859eead79d8b95d09e4678566e8d70105c4e7b251f707a03df32442661b" +checksum = "852e951cb7832cb45cb1169900d19760cfa39b82bc0ea9c0e5a14ae88411c98b" [[package]] -name = "version-compare" -version = "0.2.0" +name = "version_check" +version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "852e951cb7832cb45cb1169900d19760cfa39b82bc0ea9c0e5a14ae88411c98b" +checksum = "914b1a6776c4c929a602fafd8bc742e06365d4bcbe48c30f9cca5824f70dc9dd" [[package]] name = "version_check" @@ -4219,31 +9040,47 @@ version = "0.9.0+wasi-snapshot-preview1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cccddf32554fecc6acb585f82a32a72e28b48f8c4c1883ddfeeeaa96f7d8e519" +[[package]] +name = "wasi" +version = "0.10.0+wasi-snapshot-preview1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1a143597ca7c7793eff794def352d41792a93c481eb1042423ff7ff72ba2c31f" + [[package]] name = "wasi" version = "0.11.0+wasi-snapshot-preview1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" +[[package]] +name = "wasi" +version = "0.14.2+wasi-0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9683f9a5a998d873c0d21fcbe3c083009670149a8fab228644b8bd36b2c48cb3" +dependencies = [ + "wit-bindgen-rt", +] + [[package]] name = "wasm-bindgen" -version = "0.2.99" +version = "0.2.100" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a474f6281d1d70c17ae7aa6a613c87fce69a127e2624002df63dcb39d6cf6396" +checksum = "1edc8929d7499fc4e8f0be2262a241556cfc54a0bea223790e71446f2aab1ef5" dependencies = [ "cfg-if", "once_cell", + "rustversion", "wasm-bindgen-macro", ] [[package]] name = "wasm-bindgen-backend" -version = "0.2.99" +version = "0.2.100" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f89bb38646b4f81674e8f5c3fb81b562be1fd936d84320f3264486418519c79" +checksum = "2f0a0651a5c2bc21487bde11ee802ccaf4c51935d0d3d42a6101f98161700bc6" dependencies = [ "bumpalo", - "log", + "log 0.4.27", "proc-macro2", "quote", "syn 2.0.93", @@ -4252,9 +9089,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-futures" -version = "0.4.49" +version = "0.4.50" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38176d9b44ea84e9184eff0bc34cc167ed044f816accfe5922e54d84cf48eca2" +checksum = "555d470ec0bc3bb57890405e5d4322cc9ea83cebb085523ced7be4144dac1e61" dependencies = [ "cfg-if", "js-sys", @@ -4265,9 +9102,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro" -version = "0.2.99" +version = "0.2.100" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2cc6181fd9a7492eef6fef1f33961e3695e4579b9872a6f7c83aee556666d4fe" +checksum = "7fe63fc6d09ed3792bd0897b314f53de8e16568c2b3f7982f468c0bf9bd0b407" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -4275,9 +9112,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.99" +version = "0.2.100" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "30d7a95b763d3c45903ed6c81f156801839e5ee968bb07e534c44df0fcd330c2" +checksum = "8ae87ea40c9f689fc23f209965b6fb8a99ad69aeeb0231408be24920604395de" dependencies = [ "proc-macro2", "quote", @@ -4288,15 +9125,151 @@ dependencies = [ [[package]] name = "wasm-bindgen-shared" -version = "0.2.99" +version = "0.2.100" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1a05d73b933a847d6cccdda8f838a22ff101ad9bf93e33684f39c1f5f0eece3d" +dependencies = [ + "unicode-ident", +] + +[[package]] +name = "wasm-streams" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "15053d8d85c7eccdbefef60f06769760a563c7f0a9d6902a13d35c7800b0ad65" +dependencies = [ + "futures-util", + "js-sys", + "wasm-bindgen", + "wasm-bindgen-futures", + "web-sys", +] + +[[package]] +name = "wasmi" +version = "0.31.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "943aab3fdaaa029a6e0271b35ea10b72b943135afe9bffca82384098ad0e06a6" +checksum = "77a8281d1d660cdf54c76a3efa9ddd0c270cada1383a995db3ccb43d166456c7" +dependencies = [ + "smallvec", + "spin", + "wasmi_arena", + "wasmi_core", + "wasmparser-nostd", +] + +[[package]] +name = "wasmi_arena" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "104a7f73be44570cac297b3035d76b169d6599637631cf37a1703326a0727073" + +[[package]] +name = "wasmi_core" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dcf1a7db34bff95b85c261002720c00c3a6168256dcb93041d3fa2054d19856a" +dependencies = [ + "downcast-rs", + "libm", + "num-traits", + "paste", +] + +[[package]] +name = "wasmparser-nostd" +version = "0.100.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d5a015fe95f3504a94bb1462c717aae75253e39b9dd6c3fb1062c934535c64aa" +dependencies = [ + "indexmap-nostd", +] + +[[package]] +name = "wayland-backend" +version = "0.3.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fe770181423e5fc79d3e2a7f4410b7799d5aab1de4372853de3c6aa13ca24121" +dependencies = [ + "cc", + "downcast-rs", + "rustix 0.38.44", + "smallvec", + "wayland-sys", +] + +[[package]] +name = "wayland-client" +version = "0.31.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "978fa7c67b0847dbd6a9f350ca2569174974cd4082737054dbb7fbb79d7d9a61" +dependencies = [ + "bitflags 2.9.1", + "rustix 0.38.44", + "wayland-backend", + "wayland-scanner", +] + +[[package]] +name = "wayland-protocols" +version = "0.32.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "779075454e1e9a521794fed15886323ea0feda3f8b0fc1390f5398141310422a" +dependencies = [ + "bitflags 2.9.1", + "wayland-backend", + "wayland-client", + "wayland-scanner", +] + +[[package]] +name = "wayland-protocols-wlr" +version = "0.3.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1cb6cdc73399c0e06504c437fe3cf886f25568dd5454473d565085b36d6a8bbf" +dependencies = [ + "bitflags 2.9.1", + "wayland-backend", + "wayland-client", + "wayland-protocols", + "wayland-scanner", +] + +[[package]] +name = "wayland-scanner" +version = "0.31.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "896fdafd5d28145fce7958917d69f2fd44469b1d4e861cb5961bcbeebc6d1484" +dependencies = [ + "proc-macro2", + "quick-xml 0.37.5", + "quote", +] + +[[package]] +name = "wayland-sys" +version = "0.31.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dbcebb399c77d5aa9fa5db874806ee7b4eba4e73650948e8f93963f128896615" +dependencies = [ + "pkg-config", +] [[package]] name = "web-sys" -version = "0.3.76" +version = "0.3.77" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "33b6dd2ef9186f1f2072e409e99cd22a975331a6b3591b12c764e0e55c60d5d2" +dependencies = [ + "js-sys", + "wasm-bindgen", +] + +[[package]] +name = "web-time" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "04dd7223427d52553d3702c004d3b2fe07c148165faa56313cb00211e31c12bc" +checksum = "5a6580f308b1fad9207618087a65c04e7a10bc77e02c8e84e9b00dd4b12fa0bb" dependencies = [ "js-sys", "wasm-bindgen", @@ -4304,9 +9277,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", @@ -4322,20 +9295,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", @@ -4343,50 +9314,71 @@ 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.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "521bc38abb08001b01866da9f51eb7c5d647a19260e00054a8c7fd5f9e57f7a9" +dependencies = [ + "webpki-roots 1.0.1", +] + +[[package]] +name = "webpki-roots" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8782dd5a41a24eed3a4f40b606249b3e236ca61adf1f25ea4d45c73de122b502" +dependencies = [ + "rustls-pki-types", ] [[package]] name = "webview2-com" -version = "0.19.1" +version = "0.38.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b4a769c9f1a64a8734bde70caafac2b96cada12cd4aefa49196b3a386b8b4178" +checksum = "d4ba622a989277ef3886dd5afb3e280e3dd6d974b766118950a08f8f678ad6a4" dependencies = [ "webview2-com-macros", "webview2-com-sys", - "windows 0.39.0", + "windows", + "windows-core 0.61.2", "windows-implement", + "windows-interface", ] [[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.93", ] [[package]] name = "webview2-com-sys" -version = "0.19.0" +version = "0.38.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aac48ef20ddf657755fdcda8dfed2a7b4fc7e4581acce6fe9b88c3d64f29dee7" +checksum = "36695906a1b53a3bf5c4289621efedac12b73eeb0b89e7e1a89b517302d5d75c" dependencies = [ - "regex", - "serde", - "serde_json", - "thiserror", - "windows 0.39.0", - "windows-bindgen", - "windows-metadata", + "thiserror 2.0.12", + "windows", + "windows-core 0.61.2", ] +[[package]] +name = "weezl" +version = "0.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a751b3277700db47d3e574514de2eced5e54dc8a5436a3bf7a0b248b2cee16f3" + [[package]] name = "winapi" version = "0.3.9" @@ -4419,36 +9411,40 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" [[package]] -name = "windows" -version = "0.39.0" +name = "window-vibrancy" +version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1c4bd0a50ac6020f65184721f758dba47bb9fbc2133df715ec74a237b26794a" +checksum = "d9bec5a31f3f9362f2258fd0e9c9dd61a9ca432e7306cc78c444258f0dce9a9c" dependencies = [ - "windows-implement", - "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 0.6.1", + "objc2-app-kit", + "objc2-core-foundation", + "objc2-foundation 0.3.1", + "raw-window-handle", + "windows-sys 0.59.0", + "windows-version", ] [[package]] name = "windows" -version = "0.48.0" +version = "0.61.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e686886bc078bc1b0b600cac0147aadb815089b6e4da64016cbd754b6342700f" +checksum = "9babd3a767a4c1aef6900409f85f5d53ce2544ccdfaa86dad48c91782c6d6893" dependencies = [ - "windows-targets 0.48.5", + "windows-collections", + "windows-core 0.61.2", + "windows-future", + "windows-link", + "windows-numerics", ] [[package]] -name = "windows-bindgen" -version = "0.39.0" +name = "windows-collections" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "68003dbd0e38abc0fb85b939240f4bce37c43a5981d3df37ccbaaa981b47cb41" +checksum = "3beeceb5e5cfd9eb1d76b381630e82c4241ccd0d27f1a39ed41b2760b255c5e8" dependencies = [ - "windows-metadata", - "windows-tokens", + "windows-core 0.61.2", ] [[package]] @@ -4460,35 +9456,104 @@ dependencies = [ "windows-targets 0.52.6", ] +[[package]] +name = "windows-core" +version = "0.61.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c0fdd3ddb90610c7638aa2b3a3ab2904fb9e5cdbecc643ddb3647212781c4ae3" +dependencies = [ + "windows-implement", + "windows-interface", + "windows-link", + "windows-result", + "windows-strings", +] + +[[package]] +name = "windows-future" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fc6a41e98427b19fe4b73c550f060b59fa592d7d686537eebf9385621bfbad8e" +dependencies = [ + "windows-core 0.61.2", + "windows-link", + "windows-threading", +] + [[package]] name = "windows-implement" -version = "0.39.0" +version = "0.60.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ba01f98f509cb5dc05f4e5fc95e535f78260f15fea8fe1a8abdd08f774f1cee7" +checksum = "a47fddd13af08290e67f4acabf4b459f647552718f683a7b415d290ac744a836" dependencies = [ - "syn 1.0.109", - "windows-tokens", + "proc-macro2", + "quote", + "syn 2.0.93", ] [[package]] -name = "windows-metadata" -version = "0.39.0" +name = "windows-interface" +version = "0.59.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bd9211b69f8dcdfa817bfd14bf1c97c9188afa36f4750130fcdf3f400eca9fa8" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.93", +] + +[[package]] +name = "windows-link" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5e6ad25900d524eaabdbbb96d20b4311e1e7ae1699af4fb28c17ae66c80d798a" + +[[package]] +name = "windows-numerics" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9150af68066c4c5c07ddc0ce30421554771e528bde427614c61038bc2c92c2b1" +dependencies = [ + "windows-core 0.61.2", + "windows-link", +] + +[[package]] +name = "windows-registry" +version = "0.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5b8a9ed28765efc97bbc954883f4e6796c33a06546ebafacbabee9696967499e" +dependencies = [ + "windows-link", + "windows-result", + "windows-strings", +] + +[[package]] +name = "windows-result" +version = "0.3.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "56f42bd332cc6c8eac5af113fc0c1fd6a8fd2aa08a0119358686e5160d0586c6" +dependencies = [ + "windows-link", +] + +[[package]] +name = "windows-strings" +version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9ee5e275231f07c6e240d14f34e1b635bf1faa1c76c57cfd59a5cdb9848e4278" +checksum = "56e6c93f3a0c3b36176cb1327a4958a0353d5d166c2a35cb268ace15e91d3b57" +dependencies = [ + "windows-link", +] [[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]] @@ -4518,6 +9583,30 @@ dependencies = [ "windows-targets 0.52.6", ] +[[package]] +name = "windows-sys" +version = "0.60.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f2f500e4d28234f72040990ec9d39e3a6b950f9f22d3dba18416c35882612bcb" +dependencies = [ + "windows-targets 0.53.2", +] + +[[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" @@ -4542,7 +9631,7 @@ dependencies = [ "windows_aarch64_gnullvm 0.52.6", "windows_aarch64_msvc 0.52.6", "windows_i686_gnu 0.52.6", - "windows_i686_gnullvm", + "windows_i686_gnullvm 0.52.6", "windows_i686_msvc 0.52.6", "windows_x86_64_gnu 0.52.6", "windows_x86_64_gnullvm 0.52.6", @@ -4550,10 +9639,29 @@ dependencies = [ ] [[package]] -name = "windows-tokens" -version = "0.39.0" +name = "windows-targets" +version = "0.53.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c66f69fcc9ce11da9966ddb31a40968cad001c5bedeb5c2b82ede4253ab48aef" +dependencies = [ + "windows_aarch64_gnullvm 0.53.0", + "windows_aarch64_msvc 0.53.0", + "windows_i686_gnu 0.53.0", + "windows_i686_gnullvm 0.53.0", + "windows_i686_msvc 0.53.0", + "windows_x86_64_gnu 0.53.0", + "windows_x86_64_gnullvm 0.53.0", + "windows_x86_64_msvc 0.53.0", +] + +[[package]] +name = "windows-threading" +version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f838de2fe15fe6bac988e74b798f26499a8b21a9d97edec321e79b28d1d7f597" +checksum = "b66463ad2e0ea3bbf808b7f1d371311c80e115c0b71d60efc142cafbcfb057a6" +dependencies = [ + "windows-link", +] [[package]] name = "windows-version" @@ -4583,10 +9691,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3" [[package]] -name = "windows_aarch64_msvc" -version = "0.39.0" +name = "windows_aarch64_gnullvm" +version = "0.53.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ec7711666096bd4096ffa835238905bb33fb87267910e154b18b44eaabb340f2" +checksum = "86b8d5f90ddd19cb4a147a5fa63ca848db3df085e25fee3cc10b39b6eebae764" [[package]] name = "windows_aarch64_msvc" @@ -4607,10 +9715,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469" [[package]] -name = "windows_i686_gnu" -version = "0.39.0" +name = "windows_aarch64_msvc" +version = "0.53.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "763fc57100a5f7042e3057e7e8d9bdd7860d330070251a73d003563a3bb49e1b" +checksum = "c7651a1f62a11b8cbd5e0d42526e55f2c99886c77e007179efff86c2b137e66c" [[package]] name = "windows_i686_gnu" @@ -4630,6 +9738,12 @@ version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b" +[[package]] +name = "windows_i686_gnu" +version = "0.53.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c1dc67659d35f387f5f6c479dc4e28f1d4bb90ddd1a5d3da2e5d97b42d6272c3" + [[package]] name = "windows_i686_gnullvm" version = "0.52.6" @@ -4637,10 +9751,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66" [[package]] -name = "windows_i686_msvc" -version = "0.39.0" +name = "windows_i686_gnullvm" +version = "0.53.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7bc7cbfe58828921e10a9f446fcaaf649204dcfe6c1ddd712c5eebae6bda1106" +checksum = "9ce6ccbdedbf6d6354471319e781c0dfef054c81fbc7cf83f338a4296c0cae11" [[package]] name = "windows_i686_msvc" @@ -4661,10 +9775,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66" [[package]] -name = "windows_x86_64_gnu" -version = "0.39.0" +name = "windows_i686_msvc" +version = "0.53.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6868c165637d653ae1e8dc4d82c25d4f97dd6605eaa8d784b5c6e0ab2a252b65" +checksum = "581fee95406bb13382d2f65cd4a908ca7b1e4c2f1917f143ba16efe98a589b5d" [[package]] name = "windows_x86_64_gnu" @@ -4684,6 +9798,12 @@ version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78" +[[package]] +name = "windows_x86_64_gnu" +version = "0.53.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2e55b5ac9ea33f2fc1716d1742db15574fd6fc8dadc51caab1c16a3d3b4190ba" + [[package]] name = "windows_x86_64_gnullvm" version = "0.42.2" @@ -4703,10 +9823,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d" [[package]] -name = "windows_x86_64_msvc" -version = "0.39.0" +name = "windows_x86_64_gnullvm" +version = "0.53.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5e4d40883ae9cae962787ca76ba76390ffa29214667a111db9e0a1ad8377e809" +checksum = "0a6e035dd0599267ce1ee132e51c27dd29437f63325753051e71dd9e42406c57" [[package]] name = "windows_x86_64_msvc" @@ -4726,6 +9846,12 @@ version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" +[[package]] +name = "windows_x86_64_msvc" +version = "0.53.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "271414315aff87387382ec3d271b52d7ae78726f5d44ac98b4f4030c91880486" + [[package]] name = "winnow" version = "0.5.40" @@ -4737,9 +9863,9 @@ dependencies = [ [[package]] name = "winnow" -version = "0.6.20" +version = "0.7.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "36c1fec1a2bb5866f07c25f68c26e565c4c200aebb96d7e55710c19d3e8ac49b" +checksum = "74c7b26e3480b707944fc872477815d29a8e429d2f93a1ce000f5fa84a15cbcd" dependencies = [ "memchr", ] @@ -4764,6 +9890,44 @@ dependencies = [ "windows-sys 0.48.0", ] +[[package]] +name = "winreg" +version = "0.55.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cb5a765337c50e9ec252c2069be9bf91c7df47afb103b642ba3a53bf8101be97" +dependencies = [ + "cfg-if", + "windows-sys 0.59.0", +] + +[[package]] +name = "wit-bindgen-rt" +version = "0.39.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6f42320e61fe2cfd34354ecb597f86f413484a798ba44a8ca1165c58d42da6c1" +dependencies = [ + "bitflags 2.9.1", +] + +[[package]] +name = "wl-clipboard-rs" +version = "0.9.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e5ff8d0e60065f549fafd9d6cb626203ea64a798186c80d8e7df4f8af56baeb" +dependencies = [ + "libc", + "log 0.4.27", + "os_pipe", + "rustix 0.38.44", + "tempfile", + "thiserror 2.0.12", + "tree_magic_mini", + "wayland-backend", + "wayland-client", + "wayland-protocols", + "wayland-protocols-wlr", +] + [[package]] name = "write16" version = "1.0.0" @@ -4776,42 +9940,64 @@ version = "0.5.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1e9df38ee2d2c3c5948ea468a8406ff0db0b29ae1ffde1bcf20ef305bcc95c51" +[[package]] +name = "writeable" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ea2f10b9bb0928dfb1b42b65e1f9e36f7f54dbdf08457afefb38afcdec4fa2bb" + [[package]] name = "wry" -version = "0.24.11" +version = "0.52.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c55c80b12287eb1ff7c365fc2f7a5037cb6181bd44c9fce81c8d1cf7605ffad6" +checksum = "12a714d9ba7075aae04a6e50229d6109e3d584774b99a6a8c60de1698ca111b9" dependencies = [ - "base64 0.13.1", - "block", - "cocoa", - "core-graphics", + "base64 0.22.1", + "block2 0.6.1", + "cookie", "crossbeam-channel", + "dpi", "dunce", - "gdk", - "gio", - "glib", + "gdkx11", "gtk", - "html5ever", - "http", + "html5ever 0.29.1", + "http 1.3.1", + "javascriptcore-rs", + "jni", "kuchikiki", "libc", - "log", - "objc", - "objc_id", + "ndk", + "objc2 0.6.1", + "objc2-app-kit", + "objc2-core-foundation", + "objc2-foundation 0.3.1", + "objc2-ui-kit", + "objc2-web-kit", "once_cell", - "serde", - "serde_json", + "percent-encoding 2.3.1", + "raw-window-handle", "sha2", - "soup2", - "tao", - "thiserror", - "url", + "soup3", + "tao-macros", + "thiserror 2.0.12", + "tracing", + "url 2.5.4", "webkit2gtk", "webkit2gtk-sys", "webview2-com", - "windows 0.39.0", - "windows-implement", + "windows", + "windows-core 0.61.2", + "windows-version", + "x11-dl", +] + +[[package]] +name = "wyz" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "05f360fc0b24296329c78fda852a1e9ae82de9cf7b27dae4b7f62f118f77b9ed" +dependencies = [ + "tap", ] [[package]] @@ -4836,22 +10022,46 @@ dependencies = [ ] [[package]] -name = "xattr" -version = "1.3.1" +name = "x11rb" +version = "0.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8da84f1a25939b27f6820d92aed108f83ff920fdf11a7b19366c27c4cda81d4f" +checksum = "5d91ffca73ee7f68ce055750bf9f6eca0780b8c85eff9bc046a3b0da41755e12" dependencies = [ - "libc", - "linux-raw-sys", - "rustix", + "gethostname 0.4.3", + "rustix 0.38.44", + "x11rb-protocol", ] +[[package]] +name = "x11rb-protocol" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec107c4503ea0b4a98ef47356329af139c0a4f7750e621cf2973cd3385ebcb3d" + [[package]] name = "xdg" version = "2.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "213b7324336b53d2414b2db8537e56544d981803139155afa84f76eeebb7a546" +[[package]] +name = "xml-rs" +version = "0.8.26" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a62ce76d9b56901b19a74f19431b0d8b3bc7ca4ad685a746dfd78ca8f4fc6bda" + +[[package]] +name = "xmlwriter" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec7a2a501ed189703dba8b08142f057e887dfc4b2cc4db2d343ac6376ba3e0b9" + +[[package]] +name = "xmp-writer" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4543ba138f64a94b19e1e9c66c165bca7e03d470e1c066cb76ea279d9d0e1989" + [[package]] name = "yaml-rust" version = "0.4.5" @@ -4869,7 +10079,19 @@ checksum = "120e6aef9aa629e3d4f52dc8cc43a015c7724194c97dfaf45180d2daf2b77f40" dependencies = [ "serde", "stable_deref_trait", - "yoke-derive", + "yoke-derive 0.7.5", + "zerofrom", +] + +[[package]] +name = "yoke" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5f41bb01b8226ef4bfd589436a297c53d118f65921786300e427be8d487695cc" +dependencies = [ + "serde", + "stable_deref_trait", + "yoke-derive 0.8.0", "zerofrom", ] @@ -4885,6 +10107,73 @@ dependencies = [ "synstructure", ] +[[package]] +name = "yoke-derive" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "38da3c9736e16c5d3c8c597a9aaa5d1fa565d0532ae05e27c24aa62fb32c0ab6" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.93", + "synstructure", +] + +[[package]] +name = "zbus" +version = "5.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3a7c7cee313d044fca3f48fa782cb750c79e4ca76ba7bc7718cd4024cdf6f68" +dependencies = [ + "async-broadcast", + "async-recursion", + "async-trait", + "enumflags2", + "event-listener", + "futures-core", + "futures-lite", + "hex", + "nix", + "ordered-stream", + "serde", + "serde_repr", + "tokio", + "tracing", + "uds_windows", + "windows-sys 0.59.0", + "winnow 0.7.11", + "zbus_macros", + "zbus_names", + "zvariant", +] + +[[package]] +name = "zbus_macros" +version = "5.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a17e7e5eec1550f747e71a058df81a9a83813ba0f6a95f39c4e218bdc7ba366a" +dependencies = [ + "proc-macro-crate 3.3.0", + "proc-macro2", + "quote", + "syn 2.0.93", + "zbus_names", + "zvariant", + "zvariant_utils", +] + +[[package]] +name = "zbus_names" +version = "4.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7be68e64bf6ce8db94f63e72f0c7eb9a60d733f7e0499e628dfab0f84d6bcb97" +dependencies = [ + "serde", + "static_assertions", + "winnow 0.7.11", + "zvariant", +] + [[package]] name = "zerocopy" version = "0.7.35" @@ -4892,7 +10181,16 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1b9b4fd18abc82b8136838da5d50bae7bdea537c574d8dc1a34ed098d6c166f0" dependencies = [ "byteorder", - "zerocopy-derive", + "zerocopy-derive 0.7.35", +] + +[[package]] +name = "zerocopy" +version = "0.8.26" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1039dd0d3c310cf05de012d8a39ff557cb0d23087fd44cad61df08fc31907a2f" +dependencies = [ + "zerocopy-derive 0.8.26", ] [[package]] @@ -4906,6 +10204,17 @@ dependencies = [ "syn 2.0.93", ] +[[package]] +name = "zerocopy-derive" +version = "0.8.26" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ecf5b4cc5364572d7f4c329661bcc82724222973f2cab6f050a4e5c22f75181" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.93", +] + [[package]] name = "zerofrom" version = "0.1.5" @@ -4927,15 +10236,54 @@ dependencies = [ "synstructure", ] +[[package]] +name = "zeroize" +version = "1.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ced3678a2879b30306d323f4542626697a464a97c0a07c9aebf7ebca65cd4dde" + +[[package]] +name = "zerotrie" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fb594dd55d87335c5f60177cee24f19457a5ec10a065e0a3014722ad252d0a1f" +dependencies = [ + "displaydoc", + "litemap 0.7.4", + "serde", + "zerovec 0.10.4", +] + +[[package]] +name = "zerotrie" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "36f0bbd478583f79edad978b407914f61b2972f5af6fa089686016be8f9af595" +dependencies = [ + "displaydoc", +] + [[package]] name = "zerovec" version = "0.10.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "aa2b893d79df23bfb12d5461018d408ea19dfafe76c2c7ef6d4eba614f8ff079" dependencies = [ - "yoke", + "serde", + "yoke 0.7.5", + "zerofrom", + "zerovec-derive 0.10.3", +] + +[[package]] +name = "zerovec" +version = "0.11.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4a05eb080e015ba39cc9e23bbe5e7fb04d5fb040350f99f34e338d5fdd294428" +dependencies = [ + "yoke 0.8.0", "zerofrom", - "zerovec-derive", + "zerovec-derive 0.11.1", ] [[package]] @@ -4948,3 +10296,107 @@ dependencies = [ "quote", "syn 2.0.93", ] + +[[package]] +name = "zerovec-derive" +version = "0.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5b96237efa0c878c64bd89c436f661be4e46b2f3eff1ebb976f7ef2321d2f58f" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.93", +] + +[[package]] +name = "zip" +version = "0.6.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "760394e246e4c28189f19d488c058bf16f564016aefac5d32bb1f3b51d5e9261" +dependencies = [ + "byteorder", + "crc32fast", + "crossbeam-utils", + "flate2", +] + +[[package]] +name = "zip" +version = "2.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fabe6324e908f85a1c52063ce7aa26b68dcb7eb6dbc83a2d148403c9bc3eba50" +dependencies = [ + "arbitrary", + "crc32fast", + "crossbeam-utils", + "displaydoc", + "flate2", + "indexmap 2.7.0", + "memchr", + "thiserror 2.0.12", + "time 0.3.37", + "zopfli", +] + +[[package]] +name = "zopfli" +version = "0.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "edfc5ee405f504cd4984ecc6f14d02d55cfda60fa4b689434ef4102aae150cd7" +dependencies = [ + "bumpalo", + "crc32fast", + "log 0.4.27", + "simd-adler32", +] + +[[package]] +name = "zune-inflate" +version = "0.2.54" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "73ab332fe2f6680068f3582b16a24f90ad7096d5d39b974d1c0aff0125116f02" +dependencies = [ + "simd-adler32", +] + +[[package]] +name = "zvariant" +version = "5.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9d30786f75e393ee63a21de4f9074d4c038d52c5b1bb4471f955db249f9dffb1" +dependencies = [ + "endi", + "enumflags2", + "serde", + "url 2.5.4", + "winnow 0.7.11", + "zvariant_derive", + "zvariant_utils", +] + +[[package]] +name = "zvariant_derive" +version = "5.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "75fda702cd42d735ccd48117b1630432219c0e9616bf6cb0f8350844ee4d9580" +dependencies = [ + "proc-macro-crate 3.3.0", + "proc-macro2", + "quote", + "syn 2.0.93", + "zvariant_utils", +] + +[[package]] +name = "zvariant_utils" +version = "3.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e16edfee43e5d7b553b77872d99bc36afdda75c223ca7ad5e3fbecd82ca5fc34" +dependencies = [ + "proc-macro2", + "quote", + "serde", + "static_assertions", + "syn 2.0.93", + "winnow 0.7.11", +] diff --git a/src-tauri/Cargo.toml b/src-tauri/Cargo.toml index 7fc7313..6c58c7a 100644 --- a/src-tauri/Cargo.toml +++ b/src-tauri/Cargo.toml @@ -10,6 +10,16 @@ edition = "2021" # [build] # target-dir="H:\\rust_deps\\" +# [profile.dev] +# # opt-level = 1 +# debug = 1 +# incremental = true +# debug-assertions = false +# overflow-checks = false +# # Enable high optimizations for dependencies (incl. Bevy), but not for our code: +# [profile.dev.package."*"] +# # opt-level = 3 + [profile.release] # strip = true # Automatically strip symbols from the binary. # opt-level = "z" @@ -21,16 +31,26 @@ edition = "2021" # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html [build-dependencies] -tauri-build = { version = "1.5.1", features = [] } +tauri-build = { version = "2.3.0", features = [] } [dependencies] local-ip-address="0.6.1" # fs_extra= {git="https://github.com/visnkmr/fs_extra.git"} #"1.3.0" fs_extra= {path="../fs_extra/"} #"1.3.0" -syntect="5.1.0" +syntect= {version="5.2.0",features= ["default-fancy"] } # prefstore= {path="../../../rust/prefstore/prefstore"} prefstore= {git="https://github.com/visnkmr/prefstore.git"} -tauri = { version = "1.5.4", features = ["devtools", "fs-read-file", "os-all", "path-all", "protocol-all", "shell-open"] } +tauri= { version = "2.6.2", features = ["protocol-asset", "tracing"] } +tauri-plugin-shell = "2.3.0" +tauri-plugin-http = "2.5.0" +tauri-plugin-dialog = "2.3.0" +tauri-plugin-os = "2.3.0" +tauri-plugin-fs = "2.4.0" +tauri-plugin-process = "2.3.0" +tauri-plugin-clipboard-manager = "2.3.0" +tauri-plugin-deep-link = "2.4.0" +tauri-plugin-devtools = "2.0.0" +tauri-plugin-window-state = "2.3.0" serde = { version = "1.0", features = ["derive"] } serde_json = "1.0" rayon="1.7.0" @@ -54,7 +74,7 @@ imagesize="0.12.0" # dirscan="1.4.1" # markdown= {git="https://github.com/wooorm/markdown-rs.git"} opener="0.6.1" -comrak="0.18.0" +comrak="0.39.1" # contrie="0.1.4" chrono="0.4.24" # strsim="0.10.0" @@ -75,7 +95,24 @@ regex="1.10.2" # ollama-rs = {version="0.1.7",features= ["stream"] } # warp="0.3.6" include_dir = "0.7.3" +ollama-rs = "0.3" # Or the latest version from crates.io +anyhow = "1.0.98" # Good for simple error handling +memvdb = "0.1.1" +plist="1.7.2" +text-splitter = { version = "0.27.0" } # Or "tiktoken-rs" +# extractous ="0.3.0" +shiva = { version = "1.4.9", features = ["html", "markdown", "text", "pdf", "json", "csv", "rtf", "docx", "xml", "xls", "xlsx", "ods", "typst"] } +# hyper="1.6.0" +multipart="0.18.0" +walkdir = "2.3.3" +lnk = "0.4.1" +# [target.x86_64-unknown-linux-gnu.dependencies] +# webkit2gtk = "0.18.2" +# [target.aarch64-unknown-linux-gnu.dependencies] +# webkit2gtk = "0.18.2" +[target.'cfg(windows)'.dependencies] +winreg = "0.52.0" [features] # this feature is used for production builds or when `devPath` points to the filesystem # DO NOT REMOVE!! diff --git a/src-tauri/src/appstate.rs b/src-tauri/src/appstate.rs index 957c34d..b9763a7 100644 --- a/src-tauri/src/appstate.rs +++ b/src-tauri/src/appstate.rs @@ -1,6 +1,14 @@ #![warn(clippy::disallowed_types)] +use anyhow::anyhow; use filesize::PathExt; +use memvdb::{CacheDB, Distance, Embedding}; +use ollama_rs::generation::completion::request::GenerationRequest; +use ollama_rs::generation::embeddings::request::GenerateEmbeddingsRequest; +use ollama_rs::Ollama; use prefstore::{clearall, clearcustom, getallcustomwithin, getcustom, savecustom}; +use shiva::core::bytes::Bytes; +use shiva::core::{Element, TransformerTrait}; +use text_splitter::TextSplitter; use std::collections::{HashMap, HashSet}; use std::fs; use std::mem::{self}; @@ -20,7 +28,10 @@ pub struct cachestore { pub size: u64, pub expirytime: u64, } - +pub struct ExtractedDocument { + pub content: String, + pub metadata: HashMap, + } #[derive(Debug)] pub struct AppStateStore { // pub filegptendpoint:String, @@ -47,6 +58,11 @@ pub struct AppStateStore { pub stl: Arc>>>, pub process_count: Arc>, pub buttonnames: HashMap, + pub ollama: Ollama, + pub db: Arc>, + pub filelist:RwLock>, + pub embedding_model_name: String, + // pub llm_model_name: String, // tx: Mutex>>, // rx: Mutex>>, // tx:(RwLock>), @@ -85,7 +101,12 @@ use crate::{dirsize, sizeunit}; impl AppStateStore { pub fn new(expiration: u64) -> Self { // let (tx, rx) = mpsc::channel::(); + let ollama = Ollama::from_url(tauri::Url::parse(&getcustom("filedime", "storevals/ollamaurl.set", "http://127.0.0.1:11434")).unwrap()); + let embedding_model = &getcustom("filedime", "storevals/embedding_model.set", "nomic-embed-text"); // Ensure this model is available + // let llm_model = "qwen2.5:3b".to_string(); // Ensure this model is available + // Initialize CacheDB + let mut db = CacheDB::new(); Self { // filegptendpoint:getcustom("filedime", "gpt/filegpt.endpoint", "http://localhost:8694"), // Wrap the cache in a RwLock @@ -166,8 +187,284 @@ impl AppStateStore { } buttonnames }, + db: Arc::new(RwLock::new(db)), + filelist: RwLock::new(vec![]), + ollama:ollama, + embedding_model_name: embedding_model.to_string(), + // llm_model_name: llm_model, + } + } + pub async fn removeembed(&self,path:String)->anyhow::Result<(bool)>{ + let mut db=self.db.write().unwrap(); + db.delete_collection(&path)?; + Ok(true) + } + pub async fn embedfile(&self,path:String,embedding_model_name:String)->anyhow::Result{ + // let ollama = Ollama::from_url(tauri::Url::parse(&ollamaurl).unwrap()); + + println!("Path {} exists? {}",path,Path::new(&path).exists()); + { + let mut filelist=self.filelist.read().unwrap(); + if(filelist.contains(&path)){ + return Ok(true) + } + } + if(!Path::new(&path).exists()){ + return Ok(false) + } + let input_vec = self.load_document_and_extract_text(Path::new(&path)).await.unwrap(); + let texts_to_embed=input_vec.content; + let splitter = TextSplitter::new(256); + let texts_to_embed: Vec<&str> = splitter.chunks(&texts_to_embed).collect(); + let filetexts=texts_to_embed.clone(); + let request = GenerateEmbeddingsRequest::new( + embedding_model_name, // The model name + texts_to_embed.clone().into(), // The text(s) to embed. Use .into() for Vec + ); + let response = self.ollama.generate_embeddings(request).await.unwrap(); + let (embeddings) = response.embeddings; + // { + println!("Successfully generated {} embeddings.", embeddings.len()); + let mut db=self.db.write().unwrap(); + db.create_collection(path.clone(), 768, Distance::Cosine).unwrap(); // 768 is common for nomic-embed-text + + for (i, embedding) in embeddings.iter().enumerate() { + // println!("Embedding for text {}: [{}, {}, ..., {}] (Dimension: {})", + // i, + // embedding[0], + // embedding[1], + // embedding[embedding.len() - 1], + // embedding.len() + // ); + + + // Example embeddings (these would come from your Ollama calls) + let embedding1 = Embedding { + id: HashMap::from([((format!("title")), format!("{}",filetexts[i]))]), + vector: embedding.to_owned(), + metadata: Some(input_vec.metadata.clone()), + }; + + + db.insert_into_collection(&path, embedding1).unwrap(); + + + + // Here, you would store `embedding` (Vec) along with + // `texts_to_embed[i]` (the original content) in your chosen vector database. + // Remember to use `embedding.len()` as the dimension when creating your + // vector database collection. } + let mut filelist=self.filelist.write().unwrap(); + filelist.push(path.clone()); + Ok(true) } + // pub async fn retieve_from_file_and_generate(&self,query:String)->anyhow::Result{ + // let splitter = TextSplitter::new(256); + // let texts_to_embed: Vec<&str> = splitter.chunks(&query).collect(); + + // // println!("Generating embeddings for {:?} texts using model: {}", texts_to_embed, self.embedding_model_name); + + // // 4. Create the embedding request + // // You can send a single string or a Vec for batch embedding + // let queryreq = GenerateEmbeddingsRequest::new( + // self.embedding_model_name.clone(), // The model name + // texts_to_embed.clone().into(), // The text(s) to embed. Use .into() for Vec + // ); + + // // 5. Send the request to Ollama and get the embeddings + // let queryreq = self.ollama.generate_embeddings(queryreq).await?; + // // for (i, embedding) in queryreq.embeddings.iter().enumerate() { + // // println!("Embedding for querytext {}: [{}, {}, ..., {}] (Dimension: {})", + // // i, + // // embedding[0], + // // embedding[1], + // // embedding[embedding.len() - 1], + // // embedding.len() + // // ); + // // } + // let collection = self.db.read().unwrap(); + // let collection=collection.get_collection("documents").unwrap(); + // let mut retrieved_context=String::new(); + // for (_, embedding) in queryreq.embeddings.iter().enumerate() { + // for similar_result_found in collection.get_similarity(&embedding, 3){ + + // let eachtext=(similar_result_found.embedding.id.get("title").unwrap()).to_string(); // Get top 5 similar + // retrieved_context.push_str(&eachtext); + // } + // } + // print!("Retrieved Content: {}",retrieved_context); + + // let prompt = format!( + // "Given the following context, answer the question accurately and concisely. If the answer is not in the context, state that you cannot answer from the provided information.\n\nContext:\n{}\n\nQuestion: {}", + // retrieved_context.trim(), + // query + // ); + // self.db.clear_poison(); + // let llm_model="qwen2.5:3b"; + // // --- 8. Generate Result from LLM --- + // // println!("\nGenerating response from LLM (Model: {})...", llm_model); + // let llm_request = GenerationRequest::new(llm_model.to_string(), prompt); + // if let llm_response = self.ollama.generate(llm_request).await?{ + // return Ok(llm_response.response) + // } + // Ok("no response generated".to_string()) + + // // println!("\n--- LLM Response ---"); + // // println!("{}", llm_response.response); + // // println!("--------------------"); + + // // Ok(retrieved_context) + // } + // pub async fn generatefromlocal(&self,retrieved_context:String,querystr:String)->anyhow::Result{ + // let prompt = format!( + // "Given the following context, answer the question accurately and concisely. If the answer is not in the context, state that you cannot answer from the provided information.\n\nContext:\n{}\n\nQuestion: {}", + // retrieved_context.trim(), + // querystr + // ); + // let llm_model="qwen2.5:3b"; + // // --- 8. Generate Result from LLM --- + // // println!("\nGenerating response from LLM (Model: {})...", llm_model); + // let llm_request = GenerationRequest::new(llm_model.to_string(), prompt); + // let llm_response = self.ollama.generate(llm_request).await?; + + // // println!("\n--- LLM Response ---"); + // // println!("{}", llm_response.response); + // // println!("--------------------"); + // Ok(llm_response.response) + // } + // Recursively collects text from Shiva's Document Elements. + + fn collect_text_from_elements(&self,elements: &Vec<&Element>, collected_text: &mut String) { + for element in elements { + match element { + Element::Text{text,size} => { + collected_text.push_str(&text); + } + Element::Paragraph{elements} => { + // Paragraph contains a vector of Elements, often Text, Link etc. + for items in elements.iter(){ + self.collect_text_from_elements(&vec![items], collected_text); + } + + collected_text.push_str("\n\n"); // Add paragraph break + } + Element::Header{text,level} => { + // Header also contains a vector of Elements + collected_text.push_str(&text); // Add markdown-like header prefix + collected_text.push(' '); + // collect_text_from_elements(&h.elements, collected_text); + // collected_text.push_str("\n\n"); + } + Element::List{elements,..} => { + for (i, item) in elements.iter().enumerate() { + // collected_text.push_str(&format!("{} ", if list.ordered { format!("{}. ", i + 1) } else { "- ".to_string() })); + self.collect_text_from_elements(&vec![&item.element], collected_text); + collected_text.push('\n'); + } + collected_text.push('\n'); // Add blank line after list + } + Element::Table { headers, rows } => { + for row in rows { + for cell in &row.cells { + self.collect_text_from_elements(&vec![&cell.element], collected_text); + collected_text.push('\t'); // Tab-separated cells + } + collected_text.push('\n'); // Newline for each row + } + collected_text.push('\n'); // Add blank line after table + } + Element::Image(img) => { + // Image might have alt text or caption + // if let Some(alt_text) = &img.alt { + collected_text.push_str(&format!("[Image: {}]", img.alt())); + // } else { + // collected_text.push_str("[Image]"); + // } + collected_text.push(' '); + } + Element::Hyperlink { title, url, alt, size }=>{ + // Link has elements (the display text) and a URL + // collect_text_from_elements(&link.elements, collected_text); + // if let Some(url) = &link.url { + collected_text.push_str(&format!("{}", title)); + collected_text.push_str(&format!(" ({})", url)); + // } + collected_text.push(' '); + } + // Add more as needed: + // Element::Equation(eq) => collected_text.push_str(&format!("[Equation: {}]", eq.value)), + // Element::Divider => collected_text.push_str("---\n"), + // Element::Video(vid) => collected_text.push_str(&format!("[Video: {}]", vid.url.as_deref().unwrap_or(""), vid.title.as_deref().unwrap_or(""))), + // Element::Audio(aud) => collected_text.push_str(&format!("[Audio: {}]", aud.url.as_deref().unwrap_or(""), aud.title.as_deref().unwrap_or(""))), + // _ => { + // // This catches any new or unhandled element types. + // // You might log a warning here if you want to be aware of missed content. + // // println!("Unhandled element type: {:?}", element); + // } + } + } + } + /// Helper function to get the document type from a file extension. + fn get_document_type(&self,path: &Path) -> Option<&'static str> { + path.extension().and_then(|ext| ext.to_str()).map(|s| match s { + "txt" => "text", + "md" => "markdown", + "html" | "htm" => "html", + "pdf" => "pdf", + "json" => "json", + "csv" => "csv", + "rtf" => "rtf", + "docx" => "docx", + "xml" => "xml", + "xls" => "xls", + "xlsx" => "xlsx", + "ods" => "ods", + "typst" => "typst", + _ => "unknown", // Handle unknown types + }) + } + /// Represents the extracted content and metadata of a document. + + pub async fn load_document_and_extract_text(&self,file_path: &Path) -> anyhow::Result { + let file_bytes = fs::read(file_path)?; + let input_bytes = Bytes::from(file_bytes); + + let doc_type = self.get_document_type(file_path) + .ok_or_else(|| anyhow!("Could not determine document type for {:?}", file_path))?; + + let document: shiva::core::Document = match doc_type { + "text" => shiva::text::Transformer::parse(&input_bytes)?, + "markdown" => shiva::markdown::Transformer::parse(&input_bytes)?, + "html" => shiva::html::Transformer::parse(&input_bytes)?, + "pdf" => shiva::pdf::Transformer::parse(&input_bytes)?, + "json" => shiva::json::Transformer::parse(&input_bytes)?, + "csv" => shiva::csv::Transformer::parse(&input_bytes)?, + "rtf" => shiva::rtf::Transformer::parse(&input_bytes)?, + "docx" => shiva::docx::Transformer::parse(&input_bytes)?, + "xml" => shiva::xml::Transformer::parse(&input_bytes)?, + "xls" => shiva::xls::Transformer::parse(&input_bytes)?, + "xlsx" => shiva::xlsx::Transformer::parse(&input_bytes)?, + "ods" => shiva::ods::Transformer::parse(&input_bytes)?, + "typst" => shiva::typst::Transformer::parse(&input_bytes)?, + _ => return Err(anyhow!("Unsupported document type: {}", doc_type)), + }; + + let mut collected_text = String::new(); + self.collect_text_from_elements(&document.get_all_elements(), &mut collected_text); + + let mut metadata = HashMap::new(); + metadata.insert("file_name".to_string(), file_path.file_name().unwrap_or_default().to_string_lossy().into_owned()); + metadata.insert("file_path".to_string(), file_path.to_string_lossy().into_owned()); + // Shiva's Document model might have direct metadata fields you can extract. + // E.g., `document.metadata` if it exists and is populated by the parser. + // For now, we're just adding basic file metadata. + + Ok(ExtractedDocument { + content: collected_text.trim().to_string(), // Trim whitespace + metadata, + }) +} pub fn addmark(&self, path: String, id: String) { savecustom("filedime", format!("bookmarks/{}.mark", id), path.clone()); let pof = path.clone(); @@ -306,6 +603,7 @@ impl AppStateStore { now.duration_since(instant) < self.expiration }); } + // Add a method to print the total size of the cache pub fn print_cache_size(&self) -> i32 // ->(u64,u64) diff --git a/src-tauri/src/bookmarks.rs b/src-tauri/src/bookmarks.rs index 8a882ac..4724091 100644 --- a/src-tauri/src/bookmarks.rs +++ b/src-tauri/src/bookmarks.rs @@ -1,5 +1,5 @@ use serde::Serialize; -use tauri::{Manager, State, Window}; +use tauri::{Manager, State, WebviewWindow}; use crate::{appstate::AppStateStore, sendtofrontend::loadmarks}; @@ -15,7 +15,7 @@ pub async fn removemark( windowname: &str, path: String, id: String, - window: Window, + window: WebviewWindow, state: State<'_, AppStateStore>, ) -> Result<(), ()> { state.removemark(path, id); @@ -33,7 +33,7 @@ pub async fn addmark( windowname: &str, path: String, id: String, - window: Window, + window: WebviewWindow, state: State<'_, AppStateStore>, ) -> Result<(), ()> { state.addmark(path, id); diff --git a/src-tauri/src/dirsize.rs b/src-tauri/src/dirsize.rs index dc3792a..c1e8bd6 100644 --- a/src-tauri/src/dirsize.rs +++ b/src-tauri/src/dirsize.rs @@ -5,7 +5,7 @@ use std::{ fs, path::{Path, PathBuf}, }; -use tauri::{State, Window}; +use tauri::{State, WebviewWindow}; use crate::{appstate::AppStateStore, sizeunit::find_size}; diff --git a/src-tauri/src/drivelist.rs b/src-tauri/src/drivelist.rs index 2378ccc..7187e5b 100644 --- a/src-tauri/src/drivelist.rs +++ b/src-tauri/src/drivelist.rs @@ -1,3 +1,10 @@ +//fn arch +// populatedrivelist--->get_disks->get_lsblk_devices(->parse)->get_lsblk_output(->get_command_output)->flattened/get_drives +// deserialize_fsavail +// mountdrive +// unmountdrive + +// structs DriveItem DriveInformation Drives LsBlkDeviceWithChildren LsBlkOutput LsBlkDevice use chrono::format::format; use regex::Regex; use serde::{de, Deserialize, Deserializer, Serialize}; @@ -42,7 +49,17 @@ pub fn populatedrivelist() -> Option> { "/usr", // Secondary hierarchy for read-only user data "/var", // Variable data ]; - if (get_disks().is_ok()) { + //for linux + // if cfg!(target_os = "linux") { + // println!("Running on Linux"); + // } else if cfg!(target_os = "macos") { + // println!("Running on macOS"); + // } else if cfg!(target_os = "windows") { + // println!("Running on Windows"); + // } else { + // println!("Unsupported OS"); + // } + if (cfg!(target_os = "linux") && get_disks().is_ok()) { rt = get_disks() .unwrap() .0 @@ -91,9 +108,11 @@ pub fn populatedrivelist() -> Option> { }; }) .collect::>(); - } else { + return Some(rt) + }else + { println!("no disks found using lsblk method"); - + //for windows rt = get_drives() .unwrap() .array_of_drives @@ -112,9 +131,10 @@ pub fn populatedrivelist() -> Option> { }; }) .collect::>(); + return Some(rt) } - Some(rt) + return None; } use crate::sizeunit; @@ -285,23 +305,35 @@ pub fn get_lsblk_devices() -> Result, ()> { Ok(flattened(parsed)) } pub fn get_disks() -> Result<(Vec, Vec), ()> { - // fn get_disks() -> Result,()> { - if (get_lsblk_devices().is_err()) { - return Err(()); - } - let devices = get_lsblk_devices().expect("Unable to get block devices"); let mut disks = Vec::new(); let mut uddisks = Vec::new(); - for device in devices { - if (device.uuid.is_some() && device.label.is_some()) { - disks.push(device.clone()); - } else if device.fstype.is_some() { - disks.push(device.clone()); - } else { - uddisks.push(device.clone()); + if cfg!(target_os = "linux"){ + + // fn get_disks() -> Result,()> { + if (get_lsblk_devices().is_err()) { + return Err(()); } + let devices = get_lsblk_devices().expect("Unable to get block devices"); + + for device in devices { + if (device.uuid.is_some() && device.label.is_some()) { + disks.push(device.clone()); + } else if device.fstype.is_some() { + disks.push(device.clone()); + } else { + uddisks.push(device.clone()); + } + } + return Ok((disks, uddisks)) } - Ok((disks, uddisks)) + else if cfg!(target_os = "macos") { + println!("Running on macOS"); + } else if cfg!(target_os = "windows") { + println!("Running on Windows"); + } else { + println!("Unsupported OS"); + } + return Err(()) } #[test] @@ -350,22 +382,52 @@ pub fn get_drives() -> Result { } pub fn mountdrive(uuid: String, mount_point: String) -> bool { - let mount_cmd = Command::new("udisksctl") + if cfg!(target_os = "linux") { + + Command::new("udisksctl") .arg("mount") .arg("--block-device") .arg(&mount_point) .status() - .expect(&format!("failed to run udisksctl")); - (mount_cmd.success()) + .expect(&format!("failed to run udisksctl")).success() + // println!("Running on Linux"); +} else if cfg!(target_os = "macos") { + Command::new("diskutil") + .arg("mount") + .arg(&mount_point) + .status() + .map_or(false, |s| s.success()) + // println!("Running on macOS"); + // } else if cfg!(target_os = "windows") { + // println!("Running on Windows"); + // } else { + // println!("Unsupported OS"); + } + else{ + false + } } pub fn unmountdrive(uuid: String, mount_point: String) -> bool { - let mount_cmd = Command::new("udisksctl") - .arg("unmount") - .arg("--block-device") - .arg(&mount_point) - .status() - .expect(&format!("failed to run udisksctl")); - (mount_cmd.success()) + if cfg!(target_os = "linux") { + Command::new("udisksctl") + .arg("unmount") + .arg("--block-device") + .arg(&mount_point) + .status() + .expect(&format!("failed to run udisksctl")) + .success() + } + else if cfg!(target_os = "macos"){ + Command::new("diskutil") + .arg("unmount") + .arg(&mount_point) + .status() + .map_or(false, |s| s.success()) + + } + else{ + false + } } #[test] fn test_result() { @@ -378,4 +440,4 @@ fn test_result() { .map(|ed| format!("{:?}", ed)) .collect(); println!("{:?}", dn); -} +} \ No newline at end of file diff --git a/src-tauri/src/driveops.rs b/src-tauri/src/driveops.rs index 27af633..aa7555e 100644 --- a/src-tauri/src/driveops.rs +++ b/src-tauri/src/driveops.rs @@ -1,4 +1,4 @@ -use tauri::{Manager, Window}; +use tauri::{Manager, WebviewWindow}; use crate::{ drivelist::{self, populatedrivelist}, @@ -6,7 +6,8 @@ use crate::{ }; #[tauri::command] -pub async fn senddriveslist(windowname: String, window: Window) { +pub async fn senddriveslist(windowname: String, window: WebviewWindow) { + println!("{:?}",populatedrivelist()); driveslist( &windowname.clone(), &window.app_handle(), @@ -19,7 +20,7 @@ pub async fn mountdrive( windowname: String, uuid: String, mountpoint: String, - window: Window, + window: WebviewWindow, ) -> Result { let mut returnid = "".to_string(); println!("trying to mount drive {}", mountpoint); @@ -45,7 +46,7 @@ pub async fn unmountdrive( windowname: String, uuid: String, mountpoint: String, - window: Window, + window: WebviewWindow, ) -> Result { println!("trying to unmount drive {}", uuid); if (drivelist::unmountdrive(uuid.clone(), uuid.clone())) { diff --git a/src-tauri/src/filechangewatcher.rs b/src-tauri/src/filechangewatcher.rs index 1e47b43..8216c78 100644 --- a/src-tauri/src/filechangewatcher.rs +++ b/src-tauri/src/filechangewatcher.rs @@ -1,7 +1,7 @@ use std::{collections::HashMap, fs, path::PathBuf, thread, time::SystemTime}; use filetime::FileTime; -use tauri::{Manager, State, Window}; +use tauri::{Manager, State, WebviewWindow}; use crate::{appstate::AppStateStore, listfiles::list_files, sendtofrontend::notifychange}; @@ -53,7 +53,7 @@ pub async fn stopserver(path: String, state: State<'_, AppStateStore>) -> Result pub async fn startserver( windowname: String, pathstr: String, - window: Window, + window: WebviewWindow, state: State<'_, AppStateStore>, ) -> Result<(), ()> { println!("start server command recieved"); diff --git a/src-tauri/src/fileitem.rs b/src-tauri/src/fileitem.rs index 87b8006..7f838a1 100644 --- a/src-tauri/src/fileitem.rs +++ b/src-tauri/src/fileitem.rs @@ -16,7 +16,7 @@ use std::os::windows::fs::OpenOptionsExt; // use image::{GenericImageView, io::Reader}; use rayon::prelude::*; use serde_json::json; -use tauri::{api::file, Manager, State, Window}; +use tauri::{ Manager, State}; // use walkdir::{WalkDir, DirEntry}; use crate::{ diff --git a/src-tauri/src/fileops.rs b/src-tauri/src/fileops.rs index a9420dc..9be5d59 100644 --- a/src-tauri/src/fileops.rs +++ b/src-tauri/src/fileops.rs @@ -9,7 +9,7 @@ use std::path::{Path, PathBuf}; use std::sync::mpsc::{self, TryRecvError}; use std::time::Duration; use std::{fs, thread, time}; -use tauri::{Manager, Window}; +use tauri::{Manager, WebviewWindow}; trait PathExt { fn exists_case_insensitive(&self) -> bool; } @@ -171,7 +171,7 @@ fn checkindir( } #[tauri::command] -pub async fn new(dest: String, isdir: bool, name: String, window: Window) -> Result<(), String> { +pub async fn new(dest: String, isdir: bool, name: String, window: WebviewWindow) -> Result<(), String> { // Create the directory let dest_path = Path::new(&dest); fs::create_dir_all(&dest).map_err(|e| { diff --git a/src-tauri/src/filltrie.rs b/src-tauri/src/filltrie.rs index ada6d8e..1c92410 100644 --- a/src-tauri/src/filltrie.rs +++ b/src-tauri/src/filltrie.rs @@ -16,7 +16,7 @@ use ignore::{Walk, WalkBuilder, WalkState}; use libc::stat; use rayon::prelude::*; use serde_json::json; -use tauri::{Manager, State, Window}; +use tauri::{Emitter, Manager, State, WebviewWindow}; // use walkdir::{WalkDir, DirEntry}; use crate::{ @@ -35,7 +35,7 @@ use crate::{ #[tauri::command] pub async fn populate_try( mut path: String, - window: &Window, + window: &WebviewWindow, state: &State<'_, AppStateStore>, ) -> Result<(), String> { let ignorehiddenfiles = *state.excludehidden.read().unwrap(); @@ -65,9 +65,7 @@ pub async fn populate_try( }; // return Ok(()) } - window - .app_handle() - .emit_all("start-timer", "") + window.emit_to(window.label(),"start-timer", "") .map_err(|e| e.to_string())?; opendialogwindow( &window.app_handle(), @@ -124,8 +122,7 @@ pub async fn populate_try( }) }); window - .app_handle() - .emit_all("stop-timer", "") + .emit_to(window.label(),"stop-timer", "") .map_err(|e| e.to_string())?; opendialogwindow( &window.app_handle(), diff --git a/src-tauri/src/installed_apps.rs b/src-tauri/src/installed_apps.rs new file mode 100644 index 0000000..190bdc9 --- /dev/null +++ b/src-tauri/src/installed_apps.rs @@ -0,0 +1,560 @@ +use serde::{Serialize, Deserialize}; +use std::collections::{HashMap, HashSet}; +use std::process::Command; +use serde_json::{self, Number}; +use std::path::{Path, PathBuf}; +use std::env; +use walkdir::WalkDir; + +#[derive(Serialize, Deserialize, Debug, PartialEq, Eq, Hash, Clone)] +pub struct App { + name: String, + command: String, + icon: String, + fromwhere: String, +} + +#[test] +fn testmod(){ + for app in get_installed_apps().unwrap(){ + // if app.name.to_lowercase().contains("notepad") + { + println!("{:?}", app.command); + // println!("{}", app.fromwhere); + } + } + println!("{:?}", get_installed_apps().unwrap().len()); +} +fn collect_unique_by_path(items: Vec) -> Vec { + // We use a HashMap where the key is the name and the value is the MyStruct itself. + // This allows us to easily retrieve and update the stored item. + let mut unique_items_map: HashMap = HashMap::new(); + + for item in items { + // The `entry()` API is efficient for checking existence and inserting/modifying. + // `item.name.clone()` is needed because `entry()` takes an owned key, + // but `item.name` might still be needed within `item` itself if it's inserted. + let mut final_exepath = PathBuf::new(); // Initialize with an empty path as a default + + let current_path = Path::new(&item.command); // Borrow the command string as a Path slice + + if let Some(ext) = current_path.extension().and_then(|s| s.to_str()) { + if ["exe", "com", "bat"].contains(&ext) { + // If it's already an executable, clone it to own the path data. + final_exepath = current_path.to_path_buf(); + } else { + // If it's not an executable by extension, check if it's a directory + if current_path.is_dir() { + // We need a flag to know if we found an executable in the directory. + // If not, final_exepath remains empty (or whatever default you set). + let mut found_in_dir = false; + + // Use `current_path` (the borrowed Path) for WalkDir, it's fine. + for temp_entry in WalkDir::new(current_path) + .max_depth(1) + .into_iter() + .filter_map(|e| e.ok()) + { + if temp_entry.file_type().is_file() { + if let Some(ext) = temp_entry.path().extension().and_then(|s| s.to_str()) { + if ["exe", "com", "bat"].contains(&ext) { + // Get the path as a string and convert to lowercase for checks + let filepath = temp_entry.path().to_string_lossy().to_string().to_lowercase(); + + // Check for "uninstall" or "unins" and non-empty path + if !(filepath.contains("uninstall") || filepath.contains("unins") || filepath.is_empty()) { + // THIS IS THE FIX: Convert the borrowed Path from DirEntry + // into an owned PathBuf and assign it. + final_exepath = temp_entry.path().to_path_buf(); + found_in_dir = true; + break; // Found the first suitable exe, no need to search further + } + } + } + } + } + // If the loop finished and nothing was found, final_exepath remains the default empty path. + } else { + // If it's not a directory and not an executable by extension, + // final_exepath remains the default empty path. + } + } + } + // If current_path doesn't have an extension, final_exepath remains the default empty path. + + let path: PathBuf=final_exepath; // Return the determined PathBuf + + if((!item.command.trim().is_empty() && path.parent().is_some() && !item.command.to_lowercase().contains("package cache"))){ + // println!("{:?}",path); + match unique_items_map.entry(path.parent().unwrap().to_string_lossy().to_string().clone()) { + // Case 1: Name is new, simply insert the item + std::collections::hash_map::Entry::Vacant(entry) => { + entry.insert(item); + } + // Case 2: Name already exists, apply the age logic + std::collections::hash_map::Entry::Occupied(mut entry) => { + let existing_item = entry.get_mut(); // Get a mutable reference to the stored item + + // Check if the existing item's age is None + if existing_item.command.is_empty() { + // If the existing one has no age, replace it with the new item + // `item` is consumed here by being moved into the map + *existing_item = item; + } + // Else (if existing_item.age is Some), do nothing, keep the existing item. + // The 'item' from the loop is dropped here if not moved. + } + } + } + } + + // Convert the HashMap values back into a Vec + unique_items_map.into_values().collect() +} +fn collect_unique_by_name(items: Vec) -> Vec { + // We use a HashMap where the key is the name and the value is the MyStruct itself. + // This allows us to easily retrieve and update the stored item. + let mut unique_items_map: HashMap = HashMap::new(); + + for item in items { + let name=item.name.clone(); + // The `entry()` API is efficient for checking existence and inserting/modifying. + // `item.name.clone()` is needed because `entry()` takes an owned key, + // but `item.name` might still be needed within `item` itself if it's inserted. + if((!item.command.trim().is_empty() && !item.command.to_lowercase().contains("package cache"))){ + // println!("{:?}",path); + match unique_items_map.entry(name) { + // Case 1: Name is new, simply insert the item + std::collections::hash_map::Entry::Vacant(entry) => { + + entry.insert(item); + } + // Case 2: Name already exists, apply the age logic + std::collections::hash_map::Entry::Occupied(mut entry) => { + let existing_item = entry.get_mut(); // Get a mutable reference to the stored item + + // Check if the existing item's age is None + if existing_item.command.is_empty() { + // If the existing one has no age, replace it with the new item + // `item` is consumed here by being moved into the map + *existing_item = item; + } + // Else (if existing_item.age is Some), do nothing, keep the existing item. + // The 'item' from the loop is dropped here if not moved. + } + } + } + } + + // Convert the HashMap values back into a Vec + unique_items_map.into_values().collect() +} + +#[cfg(target_os = "windows")] +pub fn get_installed_apps() -> Result, String> { + let mut app_list: Vec = Vec::new(); + let mut app_list2: Vec = Vec::new(); + let mut processed_apps: std::collections::HashSet = std::collections::HashSet::new(); + + // 1. Query Uninstall Registry Keys + // query_uninstall_registry(&mut app_list2, &mut processed_apps); + + // 2. Query App Paths Registry Key + // query_app_paths_registry(&mut app_list2, &mut processed_apps); + + // 3. Search Start Menu folders + search_start_menu(&mut app_list, &mut processed_apps); + app_list=collect_unique_by_path(app_list); + + // 4. Search PATH environment variable + // search_path_variable(&mut app_list2, &mut processed_apps); + + // 5. Query for Microsoft Store apps (UWP) + query_uwp_apps(&mut app_list, &mut processed_apps); + app_list=collect_unique_by_name(app_list); +// let mut retlist=vec![]; +// for ea in app_list2{ +// let mut found=false; +// for eap in app_list.clone(){ +// if ea.name==eap.name{ +// found=true +// } +// } +// if !found{ +// retlist.push(ea); +// } +// } + Ok((app_list)) +} + +#[cfg(target_os = "windows")] +fn query_uninstall_registry(app_list: &mut Vec, processed_apps: &mut std::collections::HashSet) { + let registry_paths = [ + "HKLM:\\Software\\Wow6432Node\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\*", + "HKLM:\\Software\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\*", + "HKCU:\\Software\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\*", + ]; + + for path in ®istry_paths { + let output = Command::new("powershell") + .args(&[ + "-Command", + &format!("Get-ItemProperty {} | Select-Object DisplayName, DisplayIcon, InstallLocation | ConvertTo-Json", path) + ]) + .output(); + + if let Ok(output) = output { + if output.status.success() { + let result_str = String::from_utf8_lossy(&output.stdout); + let json_values: Vec = if result_str.trim().starts_with('[') { + serde_json::from_str(&result_str).unwrap_or_default() + } else if result_str.trim().is_empty() { + vec![] + } else { + serde_json::from_str::(&result_str).map(|v| vec![v]).unwrap_or_default() + }; + + for app in json_values { + if let Some(name) = app["DisplayName"].as_str() { + if !name.is_empty() && !processed_apps.contains(name) { + let icon = app["DisplayIcon"].as_str().unwrap_or("").to_string(); + let install_location = app["InstallLocation"].as_str().unwrap_or("").to_string(); + + let mut command = icon.clone(); + + if command.contains(',') { + command = command.split(',').next().unwrap_or("").to_string(); + } + command = command.replace("", ""); + + let lower_cmd = command.to_lowercase(); + if (lower_cmd.contains("uninstall") || lower_cmd.contains("unins") || lower_cmd.is_empty()) { + if !install_location.is_empty() { + command = install_location; + } + } + + if !command.is_empty() { + app_list.push(App { + name: name.to_string(), + command:if(!(command.contains("uninstall") || command.contains("unins") || command.is_empty())){command}else{"".to_string()}, + icon, + fromwhere: path.to_string(), + }); + processed_apps.insert(name.to_string()); + } + } + } + } + } + } + } +} + +#[cfg(target_os = "windows")] +fn query_app_paths_registry(app_list: &mut Vec, processed_apps: &mut std::collections::HashSet) { + use winreg::enums::*; + use winreg::RegKey; + + let hklm = RegKey::predef(HKEY_LOCAL_MACHINE); + if let Ok(app_paths) = hklm.open_subkey("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\App Paths") { + for key in app_paths.enum_keys().filter_map(Result::ok) { + if let Ok(subkey) = app_paths.open_subkey(&key) { + if let Ok(path_str) = subkey.get_value::("") { + let name = key; + if !name.is_empty() && !processed_apps.contains(&name) { + app_list.push(App { + name: name.clone(), + command: path_str.clone(), + icon: path_str, + fromwhere: "App Paths".to_string(), + }); + processed_apps.insert(name); + } + } + } + } + } +} + +#[cfg(target_os = "windows")] +fn search_start_menu(app_list: &mut Vec, processed_apps: &mut std::collections::HashSet) { + let start_menu_paths = vec![ + env::var("APPDATA").unwrap_or_default() + "\\Microsoft\\Windows\\Start Menu\\Programs", + env::var("ALLUSERSPROFILE").unwrap_or_default() + "\\Microsoft\\Windows\\Start Menu\\Programs", + ]; + + for path in start_menu_paths { + if Path::new(&path).exists() { + for entry in WalkDir::new(path).into_iter().filter_map(|e| e.ok()) { + if entry.file_type().is_file() && entry.path().extension().and_then(|s| s.to_str()) == Some("lnk") { + + if let Ok(link) = lnk::ShellLink::open(entry.path()) { + let mut exepath="".to_string(); + if let Some(target_path) = link.working_dir() { + if Path::new(target_path).is_dir() { + for entry in WalkDir::new(target_path).max_depth(1).into_iter().filter_map(|e| e.ok()) { + if entry.file_type().is_file() { + if let Some(ext) = entry.path().extension().and_then(|s| s.to_str()) { + if ["exe", "com", "bat"].contains(&ext) { + let filepath=entry.path().to_string_lossy().to_string().to_lowercase(); + if(!(filepath.contains("uninstall") || filepath.contains("unins") || filepath.is_empty())){ + exepath=entry.path().to_string_lossy().to_string() + } + } + } + } + } + } + let name = entry.path().file_stem().unwrap().to_string_lossy().to_string(); + if !name.is_empty() && !processed_apps.contains(&name) { + app_list.push(App { + name: name.clone(), + command: exepath, + icon: target_path.to_string(), + fromwhere: "Start Menu".to_string(), + }); + processed_apps.insert(name); + } + } + } + } + } + } + } +} + +#[cfg(target_os = "windows")] +fn search_path_variable(app_list: &mut Vec, processed_apps: &mut std::collections::HashSet) { + if let Ok(path_var) = env::var("PATH") { + for path in env::split_paths(&path_var) { + if path.is_dir() { + for entry in WalkDir::new(path).max_depth(1).into_iter().filter_map(|e| e.ok()) { + if entry.file_type().is_file() { + if let Some(ext) = entry.path().extension().and_then(|s| s.to_str()) { + if ["exe", "com", "bat"].contains(&ext) { + let name = entry.path().file_stem().unwrap().to_string_lossy().to_string(); + if !name.is_empty() && !processed_apps.contains(&name) { + app_list.push(App { + name: name.clone(), + command: entry.path().to_string_lossy().to_string(), + icon: entry.path().to_string_lossy().to_string(), + fromwhere: "PATH".to_string(), + }); + processed_apps.insert(name); + } + } + } + } + } + } + } + } +} + +#[cfg(target_os = "windows")] +fn query_uwp_apps(app_list: &mut Vec, processed_apps: &mut std::collections::HashSet) { + let uwp_output = Command::new("powershell") + .args(&[ + "-Command", + "Get-AppxPackage | Select-Object Name, PackageFamilyName | ConvertTo-Json" + ]) + .output(); + + if let Ok(output) = uwp_output { + if output.status.success() { + let result_str = String::from_utf8_lossy(&output.stdout); + if let Ok(apps) = serde_json::from_str::>(&result_str) { + // println!("{:?}",apps); + + for app in apps { + if app["Name"].as_str().unwrap().to_lowercase().contains("notepad") + { + println!("{:?}", app); + // println!("{}", app.fromwhere); + } + if let (Some(name), Some(_location)) = (app["Name"].as_str(), app["PackageFamilyName"].as_str()) { + if !name.is_empty() && !processed_apps.contains(name) { + let app_list_entry = App { + name: name.to_string(), + command: format!("explorer.exe shell:AppsFolder\\{}!App", _location), + icon: "".to_string(), + fromwhere: "Windows Appstore".to_string(), + }; + app_list.push(app_list_entry); + processed_apps.insert(name.to_string()); + } + } + } + } + } + } +} + +#[cfg(target_os = "macos")] +pub fn get_installed_apps() -> Result, String> { + let mut app_list: Vec = Vec::new(); + if let Ok(entries) = std::fs::read_dir("/Applications") { + for entry in entries.flatten() { + if let Some(file_name) = entry.file_name().to_str() { + if file_name.ends_with(".app") { + let app_name = file_name.trim_end_matches(".app").to_string(); + let mut icon_path = "".to_string(); + let plist_path = format!("/Applications/{}/Contents/Info.plist", file_name); + if let Ok(plist_content) = std::fs::read_to_string(plist_path) { + if let Some(icon_file_line) = plist_content.lines().find(|line| line.contains("CFBundleIconFile")) { + if let Some(next_line) = plist_content.lines().skip_while(|line| !line.contains("CFBundleIconFile")).nth(1) { + if let Some(icon_file) = next_line.trim().strip_prefix("").and_then(|s| s.strip_suffix("")) { + icon_path = format!("/Applications/{}/Contents/Resources/{}", file_name, icon_file); + } + } + } + } + app_list.push(App { + name: app_name.clone(), + command: format!("open -a \"{}\"", app_name), + icon: icon_path, + fromwhere: "Applications Folder".to_string(), + }); + } + } + } + } + Ok(app_list) +} + +#[cfg(target_os = "linux")] +pub fn get_installed_apps() -> Result, String> { + use std::fs; + let mut app_list: Vec = Vec::new(); + let mut processed_apps: std::collections::HashSet = std::collections::HashSet::new(); + + let dirs = ["/usr/share/applications", "/var/lib/snapd/desktop/applications", "/usr/share/applications/kde-org"]; + if let Some(home_dir) = dirs::home_dir() { + if let Some(local_app_dir) = home_dir.join(".local/share/applications").to_str() { + let mut all_dirs = dirs.to_vec(); + all_dirs.push(local_app_dir); + parse_desktop_files(&mut app_list, &mut processed_apps, &all_dirs); + } else { + parse_desktop_files(&mut app_list, &mut processed_apps, &dirs); + } + } + + Ok(app_list) +} + +#[cfg(target_os = "linux")] +fn parse_desktop_files(app_list: &mut Vec, processed_apps: &mut std::collections::HashSet, dirs: &[&str]) { + for dir in dirs { + if let Ok(entries) = std::fs::read_dir(dir) { + for entry in entries.flatten() { + if let Some(path_str) = entry.path().to_str() { + if path_str.ends_with(".desktop") { + if let Ok(content) = std::fs::read_to_string(path_str) { + let mut name = None; + let mut command = None; + let mut icon = None; + for line in content.lines() { + if line.starts_with("Name=") { + name = Some(line.trim_start_matches("Name=").to_string()); + } + if line.starts_with("Exec=") { + command = Some(line.trim_start_matches("Exec=").to_string()); + } + if line.starts_with("Icon=") { + icon = Some(line.trim_start_matches("Icon=").to_string()); + } + } + if let (Some(name), Some(command)) = (name, command) { + if !processed_apps.contains(&name) { + app_list.push(App { name: name.clone(), command, icon: icon.unwrap_or_default(), fromwhere: dir.to_string() }); + processed_apps.insert(name); + } + } + } + } + } + } + } + } +} + +#[cfg(not(any(target_os = "windows", target_os = "macos", target_os = "linux")))] +pub fn get_installed_apps() -> Result, String> { + Err("Unsupported OS".to_string()) +} +#[test] +pub fn testopen(){ + launch_app_command("explorer.exe shell:AppsFolder\\Microsoft.WindowsNotepad_8wekyb3d8bbwe!App".to_string()); + // launch_app_command("V:\\installs\\TablePlus\\TablePlus.exe".to_string()); +} +#[tauri::command] +pub fn launch_app_command(command: String) { + #[cfg(target_os = "windows")] + { + let parts: Vec<&str> = command.splitn(2, ' ').collect(); + let program = parts[0]; + let args_str_opt = parts.get(1); + + if program.eq_ignore_ascii_case("explorer.exe") { + // For explorer.exe, we launch explorer.exe directly + // and pass the rest of the string as a single argument. + if let Some(args) = args_str_opt { + let _ = Command::new("explorer.exe") + .arg(args) // This is the "shell:AppsFolder..." part + .spawn(); + } else { + // Handle case where it's just "explorer.exe" without arguments + eprintln!("Warning: 'explorer.exe' command issued without arguments."); + let _ = Command::new("explorer.exe").spawn(); // Launch explorer normally + } + } else { + // For other commands, we use `cmd /C start` + // `start` helps to detach the process and handle paths with spaces. + let mut cmd = Command::new("cmd"); + cmd.arg("/C").arg("start").arg(""); // "/C start \"\"" (the empty string is for the title) + + // Add the program itself + cmd.arg(program); + + // If there are arguments, add them + if let Some(args_str) = args_str_opt { + // Split arguments string by space and add them as separate args to `start` + for arg_part in args_str.split(' ') { + if !arg_part.is_empty() { // Avoid adding empty strings if multiple spaces + cmd.arg(arg_part); + } + } + } + let _ = cmd.spawn(); + } + } + + #[cfg(target_os = "macos")] + { + use std::process::Command; + let _ = Command::new("sh").arg("-c").arg(&command).spawn(); + } + + #[cfg(target_os = "linux")] + { + use std::process::Command; + let cleaned_command = command + .replace("%f", "") + .replace("%F", "") + .replace("%u", "") + .replace("%U", "") + .replace("%i", "") + .replace("%c", "") + .replace("%k", "") + .trim() + .to_string(); + + let _ = Command::new("sh").arg("-c").arg(&cleaned_command).spawn(); + } + + #[cfg(not(any(target_os = "windows", target_os = "macos", target_os = "linux")))] + { + eprintln!("launch_app is not implemented for this OS"); + } +} \ No newline at end of file diff --git a/src-tauri/src/listfiles.rs b/src-tauri/src/listfiles.rs index e5725cb..4904982 100644 --- a/src-tauri/src/listfiles.rs +++ b/src-tauri/src/listfiles.rs @@ -15,12 +15,12 @@ use ignore::WalkBuilder; use rayon::prelude::*; use serde::Serialize; use serde_json::json; -use tauri::{Manager, State, Window}; +use tauri::{Manager, State, WebviewWindow}; // use walkdir::{WalkDir, DirEntry}; use crate::{ appstate::{get_enum_value, set_enum_value, wThread, AppStateStore}, - drivelist::{get_disks, get_drives}, + // drivelist::{get_disks, get_drives}, // loadjs::loadjs fileitem::populatefileitem, filltrie::populate_try, @@ -52,17 +52,17 @@ pub async fn list_files( oid: String, mut path: String, ff: String, - window: Window, + window: WebviewWindow, state: State<'_, AppStateStore>, ) -> Result<(), String> { - startup(&window.app_handle()); + startup(&window.clone().app_handle()); println!("lfiles"); let ignorehiddenfiles = *state.excludehidden.read().unwrap(); if (path == "drives://") { match (dirs::home_dir()) { Some(spath) => { path = spath.to_string_lossy().to_string(); - sendparentloc(&windowname, &window.app_handle(), path.to_string(), &oid)?; + sendparentloc(&windowname, &window.clone().app_handle(), path.to_string(), &oid)?; } None => return Err("home not found".to_string()), }; @@ -71,7 +71,7 @@ pub async fn list_files( match (dirs::download_dir()) { Some(spath) => { path = spath.to_string_lossy().to_string(); - sendparentloc(&windowname, &window.app_handle(), path.to_string(), &oid)?; + sendparentloc(&windowname, &window.clone().app_handle(), path.to_string(), &oid)?; } None => return Err("home not found".to_string()), }; @@ -81,7 +81,7 @@ pub async fn list_files( match (dirs::document_dir()) { Some(spath) => { path = spath.to_string_lossy().to_string(); - sendparentloc(&windowname, &window.app_handle(), path.to_string(), &oid)?; + sendparentloc(&windowname, &window.clone().app_handle(), path.to_string(), &oid)?; } None => return Err("home not found".to_string()), }; @@ -94,13 +94,13 @@ pub async fn list_files( // }) // ); - lct(&windowname, &window.app_handle(), starttime.clone()); + lct(&windowname, &window.clone().app_handle(), starttime.clone()); let wname = windowname.clone(); let testpath = PathBuf::from(path.clone()); if (!testpath.exists() && path != "drives://") { opendialogwindow( - &window.app_handle(), + &window.clone().app_handle(), "Error #404: File not found", "File not found.", &windowname, @@ -126,14 +126,14 @@ pub async fn list_files( if (!testpath.is_dir()) { opendialogwindow( - &window.app_handle(), + &window.clone().app_handle(), "Error #400: Unknown file type", "unknown file type", &windowname, ); return Ok(()); } - window.emit_to(&wname, "reloadlist", "resettable").unwrap(); + tauri::Emitter::emit_to(&window.clone(), &wname, "reloadlist", "resettable").unwrap(); let orig = *state.process_count.lock().unwrap(); @@ -141,7 +141,7 @@ pub async fn list_files( // //empty existing filesetcollection // sendfilesetcollection( // &wname, - // &window.app_handle(), + // &window.clone().app_handle(), // &serde_json::to_string(&*state.filesetcollection.read().unwrap()).unwrap(), // ); @@ -159,10 +159,10 @@ pub async fn list_files( let parent = testpath.clone(); // get the app handle from the window - let app_handle = window.app_handle(); + // let app_handle = window.clone().app_handle(); sendparentloc( &windowname, - &app_handle, + &window.clone().app_handle(), parent.to_string_lossy().to_string(), &oid, )?; @@ -172,7 +172,7 @@ pub async fn list_files( let startime = duration.as_secs(); println!("{:?}----{}", parent, startime); - starttimer(&windowname, &app_handle)?; + starttimer(&windowname, &window.clone().app_handle())?; println!("start timer"); let threads = (num_cpus::get() as f64 * 0.75).round() as usize; @@ -207,7 +207,7 @@ pub async fn list_files( println!("read dir done on path"); - folcount(&windowname, &app_handle, fcount)?; + folcount(&windowname, &window.clone().app_handle(), fcount)?; println!("folcount sent"); // if let Some(granloc)=parent.parent(){ @@ -240,7 +240,7 @@ pub async fn list_files( folsize( &windowname.clone(), - &app_handle, + &window2.clone().app_handle(), serde_json::to_string(&json!({ "caller":startime, "size":sizeunit::size(*tfsize.lock().unwrap(),true) @@ -268,7 +268,7 @@ pub async fn list_files( // }) // ); // handle.abort(); - // stoptimer(&windowname, &window.app_handle()); + // stoptimer(&windowname, &window.clone().app_handle()); break; } // lock the mutex and get a reference to the vector @@ -283,7 +283,9 @@ pub async fn list_files( let walker = par_walker3 .into_par_iter() .filter_map(|e| e.ok()) - .for_each(|e| { + .for_each(|e| + + { if (!e.path().to_string_lossy().to_string().eq(&path)) { let fsc_clone = Arc::clone(&fsc); // thread::sleep(Duration::from_millis(1000)); @@ -301,9 +303,9 @@ pub async fn list_files( //send each file to frontend files.push(file.clone()); // push a clone of the file to the vector - fileslist( + let _ = fileslist( &windowname2.clone(), - &window.app_handle(), + &window.clone(), &serde_json::to_string(&json!({ "caller":starttime, "files":&serde_json::to_string(&file.clone()).unwrap(), @@ -321,7 +323,7 @@ pub async fn list_files( // wait for the printing thread to finish handle.join().unwrap(); - let app_handle = window.clone().app_handle(); + let app_handle = window.app_handle(); folsize( &wname, @@ -410,7 +412,7 @@ pub async fn files_list_for_miller_col( files.push(file.clone()); // push a clone of the file to the vector // fileslist( // &windowname2.clone(), - // &window.app_handle(), + // &window.clone().app_handle(), // &serde_json::to_string(&json!({ // "caller":starttime, // "files":&serde_json::to_string(&file.clone()).unwrap(), diff --git a/src-tauri/src/main.rs b/src-tauri/src/main.rs index 93079be..cb18b1c 100644 --- a/src-tauri/src/main.rs +++ b/src-tauri/src/main.rs @@ -20,10 +20,13 @@ mod filltrie; mod lastmodcalc; mod navtimeline; mod sendtofrontend; +mod installed_apps; use chrono::{DateTime, Local, Utc}; use local_ip_address::local_ip; // use get_size::GetSize; use navtimeline::{BrowserHistory, Page}; +use ollama_rs::generation::{completion::request::GenerationRequest, embeddings::request::GenerateEmbeddingsRequest}; +use text_splitter::TextSplitter; // use filesize::PathExt; use crate::driveops::*; @@ -36,17 +39,14 @@ use sendtofrontend::{driveslist, lfat, sendbuttonnames, sendprogress}; use serde_json::json; use syntect::{highlighting::ThemeSet, parsing::SyntaxSet}; use tauri::{ - api::{file::read_string, shell}, - http::ResponseBuilder, - window, CustomMenuItem, GlobalWindowEvent, Manager, Menu, MenuItem, PathResolver, Runtime, - State, Submenu, WindowEvent, + Emitter, Manager, State, WebviewWindow, WebviewWindowBuilder, WindowEvent }; // use walkdir::WalkDir; use serde::{Deserialize, Serialize}; use std::fs; use std::path::PathBuf; -use tauri::{AppHandle, Window}; +use tauri::{AppHandle}; mod appstate; use appstate::*; mod filechangewatcher; @@ -63,7 +63,7 @@ mod markdown; // mod partialratio; use crate::{ bookmarks::*, filechangewatcher::*, filltrie::populate_try, listfiles::*, markdown::*, - openhtml::*, searchfiles::*, sendtofrontend::loadmarks, tabinfo::*, + openhtml::*, searchfiles::*, sendtofrontend::loadmarks, tabinfo::*, installed_apps::*, }; use lastmodcalc::lastmodified; // mod r esync; @@ -91,22 +91,32 @@ use std::io::{self, Seek, SeekFrom, Write}; #[tauri::command] async fn searchload( path: String, - window: Window, + window: tauri::WebviewWindow, state: State<'_, AppStateStore>, ) -> Result<(), String> { populate_try(path.clone(), &window, &state).await; Ok(()) } #[tauri::command] -async fn mirror(functionname: String, arguments: Vec, window: Window) { - window.get_focused_window().unwrap().emit( - "mirror", - serde_json::to_string(&json!({ - "functionname":functionname, - "arguments":arguments - })) - .unwrap(), - ); +async fn mirror(functionname: String, arguments: Vec, window: WebviewWindow) { + window.clone().on_window_event(move|event|{ + match(event){ + + WindowEvent::Focused(true)=>{ + window + .emit( + "mirror", + serde_json::to_string(&json!({ + "functionname":functionname, + "arguments":arguments + })) + .unwrap()); + }, + _=>{ + + } + } + }); } #[derive(Serialize)] @@ -123,7 +133,7 @@ mod driveops; mod fileops; // #[tauri::command] -// async fn defaulttoopen(name:String,window: Window, state: State<'_, AppStateStore>) -> +// async fn defaulttoopen(name:String,window: WebviewWindow, state: State<'_, AppStateStore>) -> // Result // { // match(dirs::home_dir()){ @@ -142,6 +152,112 @@ async fn getlocalip() -> Result { println!("{}", local_ip().unwrap().to_string()); Ok(local_ip().unwrap().to_string()) } +#[tauri::command] +async fn fileslist(state: State<'_, AppStateStore>) -> Result, String> { + let filelist=state.filelist.read().unwrap(); + Ok(filelist.clone()) +} +#[tauri::command] +async fn embedfile(path: Vec,embeddingmodelname:String, state: State<'_, AppStateStore>) -> Result<(serde_json::Value), String> { + println!("{:?}",path); + let mut successcount=0; + let mut failcount=0; + for eachfile in path{ + if let Ok(res)=state.embedfile(eachfile,embeddingmodelname.clone()).await{ + successcount+=1 + } + else{ + failcount+=1 + } + } + if(successcount>=1) + { + return Ok(json!({"successcount":successcount,"failcount":failcount})) + } + Err("Could not embed file type not supported".to_string()) +} +#[tauri::command] +async fn queryfile(question: String, model: String,embeddingmodelname:String,usecompletefile:bool,path:String, state: State<'_, AppStateStore>) -> Result { + let mut doclist; + let mut retrieved_context=String::new(); + // let ollama = ollama_rs::Ollama::from_url(tauri::Url::parse(&ollamaurl).unwrap()); + + // let path="ALL"; + if(usecompletefile){ + if(path=="ALL") + { + let rwdoclist=state.filelist.read().unwrap(); + doclist =rwdoclist.clone(); + drop(rwdoclist); + } + else{ + doclist=vec![path.to_string()] + } + for path in doclist{ + let input_vec = state.load_document_and_extract_text(Path::new(&path)).await.unwrap(); + let texts_to_embed=input_vec.content; + retrieved_context.push_str(texts_to_embed.as_str()); + } + } + else{ + + let splitter = TextSplitter::new(256); + let texts_to_embed: Vec<&str> = splitter.chunks(&question).collect(); + + // Create the embedding request for the user's question + let query_req = GenerateEmbeddingsRequest::new( + embeddingmodelname.clone(), + texts_to_embed.clone().into(), + ); + + // 1. AWAIT: Generate embeddings for the question. No locks are held here. + let embeddings_response = state.ollama.generate_embeddings(query_req).await.unwrap(); + + // This string will hold the data we retrieve from the database. + // let mut retrieved_context = String::new(); + + // --- Start of the critical section --- + // Use a block to strictly limit the lifetime of the RwLockReadGuard. + { + let db = Arc::clone(&state.db); + // The read guard 'collections_guard' is created here. + let collections_guard = db.read().unwrap(); + let collection = collections_guard.get_collection(&path).unwrap(); + + for embedding in embeddings_response.embeddings.iter() { + // Perform the similarity search while the lock is held. + for similar_result_found in collection.get_similarity(embedding, 10) { + // Assuming the 'title' is what you want to retrieve. + // Using .get() and handling the Option is safer. + if let Some(title_value) = similar_result_found.embedding.id.get("title") { + // Convert the value to a string slice and push it. + retrieved_context.push_str(title_value.as_str()); + retrieved_context.push_str("\n"); // Add a separator for clarity + } + } + } + } // <-- The 'collections_guard' is dropped here, and the read lock is released. + // We are now safe to .await again. + + } + println!("Retrieved Content: {}", retrieved_context); + Ok(retrieved_context) + + // let prompt = format!( + // "Given the following context, answer the question accurately and concisely. If the answer is not in the context, state that you cannot answer from the provided information.\n\nContext:\n{}\n\nQuestion: {}", + // retrieved_context.trim(), + // question + // ); + + // let llm_request = GenerationRequest::new(model, prompt); + + // // 2. AWAIT: Generate the final response from the LLM. + // if let Ok(llm_response) = state.ollama.generate(llm_request).await { + // return Ok(llm_response.response); + // } + + // Ok("no response generated".to_string()) +} #[tauri::command] async fn highlightfile(path: String, theme: String) -> Result { @@ -162,15 +278,15 @@ async fn highlightfile(path: String, theme: String) -> Result { } } #[tauri::command] -fn filegptendpoint(endpoint: String) -> Result { +fn filegptendpoint(endpoint: String,whichvar:String,defaultval:String) -> Result { if (endpoint == "") { Ok(getcustom( "filedime", - "gpt/filegpt.endpoint", - "http://localhost:8694", + format!("storevals/{}.set",whichvar), + defaultval, )) } else { - savecustom("filedime", "gpt/filegpt.endpoint", endpoint.clone()); + savecustom("filedime", format!("storevals/{}.set",whichvar ), endpoint.clone()); Ok(endpoint) } } @@ -233,21 +349,68 @@ async fn check_if_installed(appname: &str) -> Result { Ok(output.status.success()) } +#[derive(Debug, Deserialize, Serialize)] +struct CommandEntry { + os: String, // The operating system name (e.g., "macOS", "Linux", "Windows"). + command: String, // The actual command string to execute. +} + +// Define a struct that mirrors the overall JSON structure. +#[derive(Debug, Deserialize, Serialize)] +struct AppConfig { + icon: String, // The icon string. + name: String, // The name string. + command: Vec, // A vector (array) of CommandEntry structs. +} +use std::env::consts::OS; +fn parse_config(json_str: &str, target_os: &str) -> Result<(String, String, Option), String> { + // Attempt to deserialize the JSON string into our AppConfig struct. + // The `?` operator is used for error propagation, returning an `Err` if deserialization fails. + let config: AppConfig = serde_json::from_str(json_str) + .map_err(|e| format!("Failed to parse JSON: {}", e))?; + + // Find the command specific to the target_os. + // `find()` returns an `Option<&CommandEntry>`, which will be `Some` if found, `None` otherwise. + let command_for_os = config.command.iter() + .find(|entry| entry.os.eq_ignore_ascii_case(target_os)) // Case-insensitive comparison for OS. + .map(|entry| entry.command.clone()); // If found, clone the command string. + + // Return the extracted data wrapped in an `Ok` variant. + Ok((config.icon, config.name, command_for_os)) +} fn startup(window: &AppHandle) -> Result<(), ()> { + let defaultopenterm=json!({ + "icon": "Terminal", + "name": "Open Terminal", + "command": [ + { + "os": "macos", + "command": "open -a Terminal %f" + }, + { + "os": "linux", + "command": "exo-open --working-directory %f --launch TerminalEmulator" + }, + { + "os": "windows", + "command": "cmd /C start cmd /K cd /d %f" + } + ] + }); //define format for adding custom button as extensions to ui - if cfg!(target_os = "linux") { - // getcustom( - // "filedime", - // "custom_scripts/terminal_open.fds", - // "exo-open --working-directory %f --launch TerminalEmulator", - // ); - } else if cfg!(target_os = "windows") { + // if cfg!(target_os = "linux") { + // // getcustom( + // // "filedime", + // // "custom_scripts/terminal_open.fds", + // // "exo-open --working-directory %f --launch TerminalEmulator", + // // ); + // } else if cfg!(target_os = "windows") { getcustom( "filedime", "custom_scripts/terminal_open.fds", - "cmd /k cd %f", + serde_json::to_string(&defaultopenterm).unwrap(), ); - } + // } let mut buttonnames = Vec::new(); // println!("{:?}",getallcustomwithin("filedime", "custom_scripts","fds")); @@ -259,19 +422,81 @@ fn startup(window: &AppHandle) -> Result<(), ()> { sendbuttonnames(&window.app_handle(), &buttonnames).unwrap(); Ok(()) } +use tauri::webview; +#[tauri::command] +fn zoom_window(window: tauri::Window, scale_factor: f64) { + // let _ = window.with_webview(move |webview| { + // #[cfg(target_os = "linux")] + // { + // // see https://docs.rs/webkit2gtk/0.18.2/webkit2gtk/struct.WebView.html + // // and https://docs.rs/webkit2gtk/0.18.2/webkit2gtk/trait.WebViewExt.html + // use webkit2gtk::traits::WebViewExt; + + // webview.inner().set_zoom_level(scale_factor); + // } + + // #[cfg(windows)] + // unsafe { + // // see https://docs.rs/webview2-com/0.19.1/webview2_com/Microsoft/Web/WebView2/Win32/struct.ICoreWebView2Controller.html + // webview.controller().SetZoomFactor(scale_factor).unwrap(); + // } + + // // #[cfg(target_os = "macos")] + // // unsafe { + // // let () = msg_send![webview.inner(), setPageZoom: scale_factor]; + // // } + // }); +} #[tauri::command] async fn otb(bname: String, path: String, state: State<'_, AppStateStore>) -> Result<(), ()> { // state.getactivepath(path); - println!("{}", path); + let current_os = OS; + + println!("{}--{}",bname, path); if (!Path::new(&path).is_dir()) { return Err(()); } - let mut args = state + let mut json_data = state .buttonnames .get(&bname.replace(" ", "_")) .unwrap() .clone(); + println!("Detected operating system: {}", current_os); + let mut args="".to_string(); + // Parse the configuration for the current operating system. + match parse_config(&json_data, current_os) { + Ok((icon, name, command)) => { + println!("--- For Current OS ({}) ---", current_os); + println!("Icon: {}", icon); + println!("Name: {}", name); + if let Some(cmd) = command { + args=cmd.clone(); + println!("Command: {}", cmd); + } else { + println!("Command for {} not found.", current_os); + } + }, + Err(e) => eprintln!("Error parsing config: {}", e), + } + + println!(); + + // Test with malformed JSON (kept for error handling demonstration) + // let malformed_json = r#"{"icon": "❌", "name": "Broken", "command": ["oops"}"#; + // match parse_config(malformed_json, current_os) { + // Ok((icon, name, command)) => { + // println!("--- For Malformed JSON ---"); + // println!("Icon: {}", icon); + // println!("Name: {}", name); + // if let Some(cmd) = command { + // println!("Command: {}", cmd); + // } else { + // println!("Command not found."); + // } + // }, + // Err(e) => eprintln!("--- For Malformed JSON Error --- \nError: {}", e), + // } args = args.replace("%f", &path); let args: Vec<_> = args.split(" ").collect(); println!("{:?}", args); @@ -295,11 +520,17 @@ async fn get_timestamp() -> String { // println!("{}",timestamp); timestamp } + +#[tauri::command] +async fn get_installed_apps_command() -> Result { + let apps = get_installed_apps()?; + serde_json::to_string(&apps).map_err(|e| e.to_string()) +} #[tauri::command] async fn nosize( windowname: String, togglewhat: String, - window: Window, + window: WebviewWindow, state: State<'_, AppStateStore>, ) -> Result<(), ()> { // println!("loading toggle rust---->1"); @@ -342,7 +573,7 @@ async fn nosize( async fn newwindow( path: String, ff: String, - window: Window, + window: WebviewWindow, state: State<'_, AppStateStore>, ) -> Result<(), ()> { let absolute_date = getuniquewindowlabel(); @@ -360,26 +591,52 @@ async fn newwindow( async fn newspecwindow( winlabel: String, name: String, - window: Window, + window: WebviewWindow, state: State<'_, AppStateStore>, ) -> Result<(), ()> { - if (winlabel == "settings") { - tauri::WindowBuilder::new( - &window.app_handle(), - winlabel, - tauri::WindowUrl::App("settings.html".into()), + // println!("{}",tauri::WindowUrl::App("settings.html".into()).to_string()); + let labelwin=winlabel; + let namewin=name; + if (labelwin == "settings" || labelwin == "installed-apps" || labelwin == "chatui") { + tauri::WebviewWindowBuilder::new( + window.app_handle(), + labelwin.clone(), + tauri::WebviewUrl::App(labelwin.clone().into()), ) - .title(name) + .title(namewin.clone()) .build() .unwrap(); + if (labelwin.starts_with("chatui")) { + println!("{:?}",embedfile(vec![namewin.replace("FileGPT: ","")],state.embedding_model_name.clone(), state).await.unwrap()); + tauri::WebviewWindowBuilder::new( + window.app_handle(), + labelwin, + tauri::WebviewUrl::App("chatui".into()), + ) + .title(namewin.clone()) + .build() + .unwrap(); + window.app_handle() + .emit( + // label, + "dialogshow", + serde_json::to_string(&json!({ + "title":namewin.replace("FileGPT: ",""), + "content":"Sucessfully embeded", + // "arguments":arguments + })) + .unwrap(), + ) + .unwrap(); + } } else { - opennewwindow(&window.app_handle(), &name, &winlabel); + opennewwindow(&window.app_handle(), &namewin, &labelwin); } Ok(()) } #[tauri::command] -fn configfolpath(window: Window, state: State<'_, AppStateStore>) -> String { +fn configfolpath(window: WebviewWindow, state: State<'_, AppStateStore>) -> String { serde_json::to_string(&json!({ "excludehidden":state.excludehidden.read().unwrap().clone(), "sessionstore":({ @@ -423,7 +680,7 @@ fn tabname(path: String) -> String { #[tauri::command] async fn foldersize( path: String, - window: Window, + window: WebviewWindow, state: State<'_, AppStateStore>, ) -> Result { let sizetosend = dirsize::dir_size(&path.to_string(), &state); @@ -434,7 +691,7 @@ async fn loadsearchlist( windowname: &str, id: String, path: String, - window: Window, + window: tauri::WebviewWindow, state: State<'_, AppStateStore>, ) -> Result<(), ()> { // state.togglelsl(); @@ -456,7 +713,7 @@ async fn loadsearchlist( // } #[tauri::command] async fn checker() -> Result { - let url = "https://cdn.jsdelivr.net/gh/vishnunkmr/quickupdates/filedimeversion.txt"; + let url = "https://cdn.jsdelivr.net/gh/visnkmr/filedime@nextrelease/version.txt"; match (reqwest::get(url).await) { Ok(response) => { // Ensure the response is successful @@ -473,14 +730,131 @@ async fn checker() -> Result { Err(_) => Err("Could not check for updates".to_string()), } } -fn handle_connection(mut stream: TcpStream) { + +fn get_boundary(request: &str) -> Option { + // Look for "Content-Type: multipart/form-data; boundary=----WebKitFormBoundary" + if let Some(pos) = request.find("Content-Type: multipart/form-data;") { + let content_type = &request[pos..]; + if let Some(boundary_pos) = content_type.find("boundary=") { + let boundary_start = boundary_pos + "boundary=".len(); + let boundary_end = content_type[boundary_start..].find("\r\n").unwrap_or(content_type.len()); + return Some(content_type[boundary_start..boundary_start + boundary_end].to_string()); + } + } + None +} + +fn get_body(request: &str) -> Option { + // The body starts after the headers, which are separated by a double newline (CRLF) + if let Some(pos) = request.find("\r\n\r\n") { + let body = &request[pos + 4..]; + return Some(body.to_string()); + } + None +} + +fn parse_multipart_form_data(body: &str, boundary: &str) -> Vec<(String, String)> { + let mut form_data = Vec::new(); + let boundarystring=format!("--{}", boundary); + let mut parts = body.split(&boundarystring); // Split by the boundary + + for part in parts { + if part.is_empty() { + continue; + } + + // Find the headers in the part + if let Some(pos) = part.find("\r\n\r\n") { + let headers = &part[..pos]; + let content = &part[pos + 4..]; // After the headers is the content + + // Check for the content-disposition header for form fields + if let Some(disposition_pos) = headers.find("Content-Disposition: form-data;") { + let header = &headers[disposition_pos..]; + if let Some(name_pos) = header.find("name=\"") { + let name_start = name_pos + "name=\"".len(); + let name_end = header[name_start..].find("\"").unwrap_or(header.len()); + let name = &header[name_start..name_start + name_end]; + + // Capture the content of the field + form_data.push((name.to_string(), content.to_string())); + } + } + } + } + + form_data +} +fn handle_connection(mut stream: TcpStream)->anyhow::Result<()> { let mut buffer = [0; 1024]; stream.read(&mut buffer).unwrap(); let request = String::from_utf8_lossy(&buffer[..]); println!("Request: {}", request); - // Assuming the request format is "GET /filename HTTP/1.1\r\n", extract filename + + // Handle CORS preflight (OPTIONS) requests + if request.starts_with("OPTIONS") { + let response = "HTTP/1.1 200 OK\r\n\ + Access-Control-Allow-Origin: *\r\n\ + Access-Control-Allow-Methods: POST, OPTIONS\r\n\ + Access-Control-Allow-Headers: Content-Type\r\n\ + Content-Length: 0\r\n\r\n"; + stream.write(response.as_bytes())?; + stream.flush()?; + return Ok(()); + } + + + // Check if the request is a POST request + if request.starts_with("POST") { + // Find the boundary from the Content-Type header + if let Some(boundary) = get_boundary(&request) { + println!("Boundary: {}", boundary); + + if let Some(body) = get_body(&request) { + // Use multipart crate to parse the body + let mut multipart = multipart::server::Multipart::with_body(body.as_bytes(), boundary); + + while let Some(mut field) = multipart.read_entry()? { + // let name = field.name().unwrap_or("unknown"); + // let filename = field.filename().unwrap_or("unknown"); + let mut file_content = Vec::new(); + + // Read the content of the file + field.data.read_to_end(&mut file_content)?; + + // println!("Field name: {}", name); + // println!("File name: {}", filename); + println!("File content: {:?}", str::from_utf8(&file_content)?); + } + + // Send a response back with CORS headers and ensure it's properly flushed + let response = "HTTP/1.1 200 OK\r\n\ + Access-Control-Allow-Origin: *\r\n\ + Content-Length: 13\r\n\r\n\ + Hello, World!"; + stream.write_all(response.as_bytes())?; + stream.flush()?; + } else { + println!("No body content found."); + } + } else { + println!("No boundary found in Content-Type."); + } + let retjson=serde_json::to_string(&json!({"ok":"ok"}))?; + // Send a response back with CORS headers + let response = format!("HTTP/1.1 200 OK\r\n\ + Access-Control-Allow-Origin: *\r\n\ + Content-Length: 13\r\n\r\n\ + {}",retjson); + stream.write(response.as_bytes())?; + stream.flush()?; + } + else{ + // Assuming the request format is "GET /filename HTTP/1.1\r\n", extract filename let mut filename = request.split_whitespace().nth(1).unwrap_or("/"); filename = filename.trim_start_matches('/'); + + // println!("---->{}----",filename); if (filename.is_empty()) { filename = ("filegpt.html"); @@ -501,6 +875,8 @@ fn handle_connection(mut stream: TcpStream) { stream.write(response.as_bytes()).unwrap(); stream.flush().unwrap(); } + } + Ok(()) } use include_dir::{include_dir, Dir}; @@ -545,6 +921,9 @@ fn main() { let mut g = AppStateStore::new(CACHE_EXPIRY); let app = tauri::Builder::default() + .plugin(tauri_plugin_http::init()) + .plugin(tauri_plugin_shell::init()) + .plugin(tauri_plugin_os::init()) .setup(|app| { let app_handle = app.handle(); // let resource_path = app_handle.path_resolver(); @@ -596,6 +975,7 @@ fn main() { highlightfile, doespathexist, otb, + zoom_window, removemark, // populate_try, search_try, @@ -608,6 +988,11 @@ fn main() { addtotabhistory, mountdrive, unmountdrive, + embedfile, + queryfile, + fileslist, + get_installed_apps_command, + launch_app_command, // whattoload, // get_window_label ]) @@ -630,20 +1015,28 @@ fn main() { _ => {} }); } -fn on_window_event(event: GlobalWindowEvent) { - if let WindowEvent::CloseRequested { - #[cfg(not(target_os = "linux"))] - api, - .. - } = event.event() - { +fn on_window_event(window: &tauri::Window, _event: &WindowEvent){ + // Get a handle to the app so we can get the global state. + let app_handle = window.app_handle(); + // if let WindowEvent::CloseRequested {} + // let state = app_handle.state::>(); + + // Lock the mutex to mutably access the state. + // let mut state = state.lock().unwrap(); + // state.counter += 1; +// } + // #[cfg(not(target_os = "linux"))] + // api, + // .. + // } = event + // { // #[cfg(target_os = "macos")] // { // app.hide().unwrap(); // api.prevent_close(); // } - } + // } } //for testing to prevent the window from autoclosing // fn hide(app: AppHandle) { @@ -660,7 +1053,7 @@ fn on_window_event(event: GlobalWindowEvent) { #[tauri::command] async fn getparentpath( mut path: String, - window: Window, + window: WebviewWindow, state: State<'_, AppStateStore>, ) -> Result { match (PathBuf::from(&path).parent()) { @@ -671,7 +1064,7 @@ async fn getparentpath( #[tauri::command] async fn get_path_options( mut path: String, - window: Window, + window: WebviewWindow, state: State<'_, AppStateStore>, ) -> Result, ()> { let mut options = Vec::new(); @@ -695,12 +1088,12 @@ async fn get_path_options( Ok(options) } -pub fn opennewwindow(app_handle: &AppHandle, title: &str, label: &str) -> Window { +pub fn opennewwindow(app_handle: &AppHandle, title: &str, label: &str) -> tauri::WebviewWindow { println!("{:?}", getwindowlist(app_handle)); - tauri::WindowBuilder::new( + tauri::WebviewWindowBuilder::new( app_handle, label, - tauri::WindowUrl::App("index.html".into()), + tauri::WebviewUrl::App("index.html".into()), ) // .initialization_script(&INIT_SCRIPT) .title(title) @@ -710,7 +1103,7 @@ pub fn opennewwindow(app_handle: &AppHandle, title: &str, label: &str) -> Window pub fn opendialogwindow(app_handle: &AppHandle, title: &str, content: &str, label: &str) { app_handle - .emit_all( + .emit( // label, "dialogshow", serde_json::to_string(&json!({ @@ -723,9 +1116,9 @@ pub fn opendialogwindow(app_handle: &AppHandle, title: &str, content: &str, labe .unwrap(); } pub fn getwindowlist(app_handle: &AppHandle) -> Vec { - match (app_handle.get_window("main")) { + match (app_handle.get_webview_window("main")) { Some(iop) => { - iop.windows() + iop.webview_windows() .iter() .map(|e| { // println!("{}--",e.0); diff --git a/src-tauri/src/markdown.rs b/src-tauri/src/markdown.rs index 3f1ca82..4cbcbcf 100644 --- a/src-tauri/src/markdown.rs +++ b/src-tauri/src/markdown.rs @@ -1,8 +1,6 @@ use std::{io::Read, path::PathBuf}; use comrak::{markdown_to_html, ComrakOptions}; -use serde_json::json; -use tauri::{Manager, State, Window}; use crate::{ appstate::AppStateStore, diff --git a/src-tauri/src/openhtml.rs b/src-tauri/src/openhtml.rs index d610b93..6d553f2 100644 --- a/src-tauri/src/openhtml.rs +++ b/src-tauri/src/openhtml.rs @@ -1,6 +1,6 @@ use std::{io::Read, path::PathBuf}; -use tauri::{Manager, State, Window}; +use tauri::{Emitter, Manager, State, WebviewWindow}; use crate::{ appstate::AppStateStore, @@ -9,7 +9,7 @@ use crate::{ }; #[tauri::command] -pub fn loadfromhtml(windowname: &str, name: String, window: Window, g: State) { +pub fn loadfromhtml(windowname: &str, name: String, window: WebviewWindow, g: State) { let mut content = String::new(); let app_handle = window.app_handle(); let path = PathBuf::from(name.clone()); diff --git a/src-tauri/src/searchfiles.rs b/src-tauri/src/searchfiles.rs index 455acf9..ca59b8b 100644 --- a/src-tauri/src/searchfiles.rs +++ b/src-tauri/src/searchfiles.rs @@ -17,7 +17,7 @@ use rayon::prelude::*; use serde::Serialize; use serde_json::json; // use rust_search::similarity_sort; -use tauri::{Manager, State, Window}; +use tauri::{Emitter, Manager, State, WebviewWindow}; // use walkdir::WalkDir; use crate::{ @@ -42,7 +42,7 @@ pub async fn search_try( mut starttime: i64, windowname: String, mut string: String, - window: Window, + window: WebviewWindow, state: State<'_, AppStateStore>, ) -> Result<(), String> // -> Vec @@ -108,8 +108,8 @@ pub async fn search_try( let mut nootimes = 0; let tfsize_clone = tfsize.clone(); // let (tx, rx) = mpsc::channel(); + let app_handle = window.app_handle().clone(); let window2 = window.clone(); - let app_handle = window.app_handle(); let string2 = string.clone(); let windowname2 = windowname.clone(); @@ -298,7 +298,7 @@ pub async fn search_try( files.push(file.clone()); fileslist( &windowname2.clone(), - &window.app_handle(), + &window.clone(), &serde_json::to_string(&json!({ "caller":starttime, "files":&serde_json::to_string(&file.clone()).unwrap(), diff --git a/src-tauri/src/sendtofrontend.rs b/src-tauri/src/sendtofrontend.rs index 48ec63b..38ce769 100644 --- a/src-tauri/src/sendtofrontend.rs +++ b/src-tauri/src/sendtofrontend.rs @@ -1,7 +1,7 @@ use std::collections::HashSet; use serde::Serialize; -use tauri::{AppHandle, Manager}; +use tauri::{AppHandle, Emitter, Manager, WebviewWindow}; use crate::FileItem; @@ -114,8 +114,8 @@ pub fn folcount(windowname: &str, ah: &AppHandle, fcount: usize) -> Result<(), S Ok(()) } -pub fn fileslist(windowname: &str, ah: &AppHandle, fl: &String) -> Result<(), String> { - // println!("{}",fl); +pub fn fileslist(windowname: &str, ah: &WebviewWindow, fl: &String) -> Result<(), String> { + println!("{}",fl); ah.emit_to(windowname, "list-files", fl) .map_err(|e| e.to_string())?; Ok(()) diff --git a/src-tauri/src/sizeunit.rs b/src-tauri/src/sizeunit.rs index 853ae62..a4ab002 100644 --- a/src-tauri/src/sizeunit.rs +++ b/src-tauri/src/sizeunit.rs @@ -6,7 +6,7 @@ use std::{ use filesize::PathExt; use serde_json::json; -use tauri::{State, Window}; +use tauri::{State}; use crate::{ appstate::{cachestore, AppStateStore}, diff --git a/src-tauri/src/tabinfo.rs b/src-tauri/src/tabinfo.rs index ba51dbd..84c4f38 100644 --- a/src-tauri/src/tabinfo.rs +++ b/src-tauri/src/tabinfo.rs @@ -1,6 +1,6 @@ use prefstore::clearall; use serde::Serialize; -use tauri::{Manager, State, Window}; +use tauri::{Manager, State, WebviewWindow}; use crate::{appstate::AppStateStore, list_files, sendtofrontend::loadmarks}; @@ -24,7 +24,7 @@ pub struct tab { pub async fn closetab( windowname: &str, id: String, - window: Window, + window: WebviewWindow, state: State<'_, AppStateStore>, ) -> Result<(), ()> { state.removetab(id, windowname.to_string()); @@ -36,7 +36,7 @@ pub async fn newtab( oid: String, path: String, ff: String, - window: Window, + window: WebviewWindow, state: State<'_, AppStateStore>, ) -> Result<(), ()> { state.addtab( diff --git a/src-tauri/tauri.conf.json b/src-tauri/tauri.conf.json index ad7a957..87e1051 100644 --- a/src-tauri/tauri.conf.json +++ b/src-tauri/tauri.conf.json @@ -1,68 +1,100 @@ { + "$schema": "https://schema.tauri.app/config/2", + "productName": "filedime", + "version": "0.1.0", + "identifier": "visnk.app.vexplorer", "build": { - "beforeDevCommand": "yarn next dev", - "beforeBuildCommand": "yarn next build", - "devPath": "http://localhost:3000", - "distDir": "../out", - "withGlobalTauri": true + "beforeDevCommand": "yarn next dev --turbopack", + "beforeBuildCommand": "yarn next build --turbopack", + "devUrl": "http://localhost:3000", + "frontendDist": "../out" }, - "package": { - "productName": "filedime" + "bundle": { + "icon": [ + "icons/32x32.png", + "icons/128x128.png", + "icons/128x128@2x.png", + "icons/icon.icns", + "icons/icon.ico" + ], + "targets": "all" }, - "tauri": { - "allowlist": { - "all": false, - "os": { - "all": true - }, - "shell": { - "all": false, - "open": true - }, - "path": { - "all": true - }, - "protocol": { - "all": true, - "asset": true, - "assetScope": ["**"] - }, - "fs": { - "scope": ["**"], - "all": false, - "readFile": true - } - }, - - "bundle": { - "active": true, - - "icon": [ - "icons/32x32.png", - "icons/128x128.png", - "icons/128x128@2x.png", - "icons/icon.icns", - "icons/icon.ico" - ], - "identifier": "visnk.app.vexplorer", - "targets": "all" - }, - "security": { - "csp": "default-src 'self'; img-src 'self' asset: https://asset.localhost; media-src 'self' asset: https://asset.localhost; connect-src 'self' asset: *; style-src 'unsafe-inline' 'self'" - }, - "updater": { - "active": false - }, + "app": { "windows": [ { "fullscreen": false, - "maximized": true, "resizable": true, "title": "Filedime", "width": 800, "height": 600, - "visible":false + "visible": true + } + ], + "security": { + "csp": { + "default-src": [ + "'self'" + ], + "img-src": [ + "'self'", + "asset:", + "https://asset.localhost" + ], + "media-src": [ + "'self'", + "asset:", + "https://asset.localhost" + ], + "connect-src": [ + "'self'", + "asset:", + "https://asset.localhost" + ], + "style-src": [ + "'self'", + "'unsafe-inline'" + ] + }, + "capabilities": [ + { + "identifier": "main-capability", + "description": "Main window capabilities", + "windows": [ + "main" + ], + "permissions": [ + "core:event:allow-listen", + "core:event:allow-unlisten", + "core:event:allow-emit", + "core:window:allow-show", + "core:window:allow-hide", + "core:window:allow-close", + "core:window:allow-minimize", + "core:window:allow-set-focus", + "core:window:allow-set-always-on-top", + "core:webview:allow-set-webview-focus", + "core:webview:allow-webview-position", + "core:webview:allow-webview-size", + "shell:allow-open" + + ] + } + ], + "assetProtocol": { + "enable": true, + "scope": [ + "**" + ] } - ] + } + }, + "plugins": { + "os": {}, + "shell": {}, + "fs": { + "scope": [ + "**" + ] + } } -} +} \ No newline at end of file diff --git a/src/app/chatui/page.tsx b/src/app/chatui/page.tsx new file mode 100644 index 0000000..99eea7d --- /dev/null +++ b/src/app/chatui/page.tsx @@ -0,0 +1,90 @@ +"use client" + +import { emit, listen } from "@tauri-apps/api/event"; +import ChatUI from "../../components/batu/components/chatui" +import { useEffect, useState } from "react"; +import { useToast } from "../../components/ui/use-toast" +import { Toaster } from "../../components/ui/toaster" +import { zoomsetup } from "../../components/filedimesettings"; +// import { appWindow } from "@tauri-apps/api/window"; +// import '../styles/globals.css' +// async function getCurrentWindowLabel() { +// try { +// const label = (await appWindow.title()).replace("FileGPT: ",""); +// console.log("Current window label:", label); +// return label; +// } catch (error) { +// console.error("Error getting window label:", error); +// return null; +// } +// } +export default function chatui(){ + zoomsetup(); + const { toast } = useToast() + + // const [path,setpath]=useState("") + useEffect(()=>{ + listen('dialogshow', (pl) => { + let recieved=JSON.parse(pl.payload); + let content=(recieved.content) + let title=(recieved.title) + toast({ + variant:"destructive", + title: title, + description: content, + }) + }); + // (async()=> { + // let fpath=(await getCurrentWindowLabel()) as string + // console.log(fpath) + // setfileinfo({ + // name: "string", + // path: fpath, + // is_dir: false, + // size: 999, + // rawfs: 999, + // lmdate: 999, + // timestamp: 999, + // foldercon: 999, + // ftype: "string", + // parent: "string", + // }) + // })() + },[]) + // getCurrentWindowLabel(); + const [fileinfo,setfileinfo]=useState({ + name: "string", + path: "", + is_dir: false, + size: 999, + rawfs: 999, + lmdate: 999, + timestamp: 999, + foldercon: 999, + ftype: "string", + parent: "string", + }) + useEffect(()=>{ + const unlisten=listen('chatui', event => { + console.log('Received:', event.payload); + setfileinfo(event.payload.myData) +}); +// emit('intercomm', { myData: 'Hello from chatui' }); + + return () => { + unlisten.then(f => f()); + // unemit.then(f => f()); + } + // return () => { + // unlisten?.() + // } + },[]) + +// useEffect(()=>{ +// +// },[]) + return (<> + + + ) +} \ No newline at end of file diff --git a/src/app/installed-apps/page.tsx b/src/app/installed-apps/page.tsx new file mode 100644 index 0000000..898b73b --- /dev/null +++ b/src/app/installed-apps/page.tsx @@ -0,0 +1,181 @@ +"use client"; +import React, { useEffect, useState, useMemo, useRef } from "react"; +// In a real Tauri app, you would use this invoke function. +// For this example, we'll simulate it. +import { invoke } from "@tauri-apps/api/core"; +import { Search } from "lucide-react"; +import {cn} from "../../lib/utils" +// --- Mock invoke function for demonstration purposes --- +// In your actual Tauri app, you would remove this and use the official API. +// const invoke = (command: string, args: any): Promise => { +// console.log(`Simulating invoke: ${command}`, args); +// if (command === "get_installed_apps_command") { +// // Simulate a list of installed applications +// const mockApps = [ +// { name: "Cosmic Messenger", command: "cosmic-messenger", icon: "" }, +// { name: "Stellar Paint", command: "stellar-paint", icon: "" }, +// { name: "Galaxy Text Editor", command: "galaxy-text", icon: "" }, +// { name: "Orbit Browser", command: "orbit-browser", icon: "" }, +// { name: "Nebula Notes", command: "nebula-notes", icon: "" }, +// { name: "Supernova System Monitor", command: "supernova-monitor", icon: "" }, +// { name: "Comet Calendar", command: "comet-calendar", icon: "" }, +// { name: "Astro File Manager", command: "astro-files", icon: "" }, +// { name: "Planet Player", command: "planet-player", icon: "" }, +// { name: "Rocket Terminal", command: "rocket-term", icon: "" }, +// { name: "Meteor Mail", command: "meteor-mail", icon: "" }, +// { name: "Void Launcher", command: "void-launcher", icon: "" }, +// ]; +// return Promise.resolve(JSON.stringify(mockApps)); +// } +// if(command === "launch_app_command") { +// alert(`Simulating launch of: ${args.command}`); +// } +// return Promise.resolve(""); +// }; + +// --- Helper for generating random colors for bot icons --- +const colors = [ + "bg-blue-500", "bg-green-500", "bg-purple-500", "bg-red-500", + "bg-yellow-500", "bg-indigo-500", "bg-pink-500", "bg-sky-500" +]; + +const getRandomColor = () => colors[Math.floor(Math.random() * colors.length)]; + +// --- SVG Bot Icon Component --- +const BotIcon = ({ colorClass }: { colorClass: string }) => ( +
+ + + + + + + + +
+); + + +// --- App Interface --- +interface App { + name: string; + command: string; + icon: string; // Base64 encoded icon or a URL + color: string; // Assigned color for the fallback icon +} + +export default function InstalledAppsPage() { + const [apps, setApps] = useState([]); + const [searchTerm, setSearchTerm] = useState(""); + const [isScrolled, setIsScrolled] = useState(false); + const mainRef = useRef(null); + + // Effect to handle scroll detection + useEffect(() => { + const mainEl = mainRef.current; + if (!mainEl) return; + + const handleScroll = () => { + // Set state based on whether the user has scrolled down + if (mainEl.scrollTop > 10) { + setIsScrolled(true); + } else { + setIsScrolled(false); + } + }; + + mainEl.addEventListener('scroll', handleScroll); + return () => mainEl.removeEventListener('scroll', handleScroll); + }, []); // This effect runs only once after the component mounts + + useEffect(() => { + // Fetch the list of installed applications from the backend. + invoke("get_installed_apps_command", {}) + .then((result: any) => { + const parsedApps = JSON.parse(result); + const appsWithColors = parsedApps.map((app: any) => ({ + ...app, + color: getRandomColor() + })); + setApps(appsWithColors); + }) + .catch(console.error); + }, []); + + const filteredApps = useMemo(() => { + if (!searchTerm) return apps; + return apps.filter((app) => + app.name.toLowerCase().includes(searchTerm.toLowerCase()) + ); + }, [searchTerm, apps]); + + const handleAppClick = (command: string) => { + invoke("launch_app_command", { command }).catch(console.error); + }; + + return ( +
+ {/* Header and Search Bar with dynamic classes */} + + + {/* Apps Grid */} +
+
+
+ + setSearchTerm(e.target.value)} + value={searchTerm} + /> +
+
+ {filteredApps.length > 0 ? ( +
+ {filteredApps.map((app) => ( +
handleAppClick(app.command)} + title={`Launch ${app.name}`} + > +
+ { + // app.icon ? ( + // {`${app.name} { + // (e.target as HTMLImageElement).style.display = 'none'; + // }} + // /> + // ) : + ( + + )} +
+ + {app.name} + +
+ ))} +
+ ) : ( +
+

No applications found.

+

Try refining your search.

+
+ )} +
+
+ ); +} diff --git a/src/app/layout.tsx b/src/app/layout.tsx index e5c38cc..71ec225 100644 --- a/src/app/layout.tsx +++ b/src/app/layout.tsx @@ -12,8 +12,8 @@ import {Metadata} from 'next' export const metadata:Metadata = { - title: 'FileGPT-Filedime', - description: 'Query your files.', + title: 'Filedime', + description: 'Fast file explorer with fancy UI.', } @@ -25,8 +25,12 @@ export default function RootLayout({ // const [showon, setshow] = useLocalStorage("dark",true); return ( - - + + + + + + + `) + printWindow.document.close() + } + } + + const downloadFile = (content: string, fileName: string, contentType: string) => { + const blob = new Blob([content], { type: contentType }) + const url = URL.createObjectURL(blob) + const a = document.createElement("a") + a.href = url + a.download = fileName + document.body.appendChild(a) + a.click() + document.body.removeChild(a) + URL.revokeObjectURL(url) + } + + return ( + !open && onClose()}> + + + Export Chat + + +
+ setExportFormat(value as ExportFormat)}> +
+ + +
+
+ + +
+
+ + +
+
+
+ +
+ + +
+
+
+ ) +} diff --git a/src/components/batu/components/filegpt-url.tsx b/src/components/batu/components/filegpt-url.tsx new file mode 100644 index 0000000..c4e4dc6 --- /dev/null +++ b/src/components/batu/components/filegpt-url.tsx @@ -0,0 +1,46 @@ +"use client" + +import { useEffect, useState } from "react" +import { Input } from "./ui/input" +import { Label } from "./ui/label" +import { Button } from "./ui/button" +import { SaveIcon } from "lucide-react" + +interface FileGPTUrlInputProps { + filegpturl: string + setFilegpturl: (key: string) => void +} + +export default function FileGPTUrl({ filegpturl, setFilegpturl }: FileGPTUrlInputProps) { + const [inputValue, setInputValue] = useState(filegpturl) + + useEffect(() => { + setInputValue(filegpturl) + }, [filegpturl]) + + const handleSave = () => { + setFilegpturl(inputValue) + localStorage.setItem("filegpt_url", inputValue) + } + + return ( +
+ +
+
+ setInputValue(e.target.value)} + placeholder="FileGPT Endpoint (e.g., http://localhost:8694)" + className="pr-10" + /> +
+ +
+
+ ) +} diff --git a/src/components/batu/components/fileupoader.tsx b/src/components/batu/components/fileupoader.tsx new file mode 100644 index 0000000..4e4fdeb --- /dev/null +++ b/src/components/batu/components/fileupoader.tsx @@ -0,0 +1,83 @@ +import { useRef, useState } from "react" +import { Button } from "../components/ui/button" +import { Paperclip, File as FileIcon } from "lucide-react" +import { HoverCard,HoverCardContent,HoverCardTrigger } from "./ui/hover-card" +import {setcolorpertheme} from "../../greet" +import { invoke } from "@tauri-apps/api/core" // Import invoke +export function FileUploader() { + const fileInputRef = useRef(null); + const [files, setFiles] = useState([]); + + // Handle file selection + const handleFileChange = (event: React.ChangeEvent) => { + if (event.target.files) { + setFiles(Array.from(event.target.files)); + } + }; + + // Trigger file input click + const handleButtonClick = () => { + fileInputRef.current?.click(); + }; + + // Handle file upload + const handleFileUpload = async () => { + const formData = new FormData(); + files.forEach(file => { + formData.append("files", file); + }); + + try { + const response = await fetch("http://localhost:8477/upload", { + method: "POST", + body: formData, + }); + + if (response.ok) { + const filePaths = await response.json(); + console.log("Uploaded files:", filePaths); + } else { + console.error("File upload failed."); + } + } catch (error) { + console.error("Error uploading files:", error); + } + }; + + return ( +
+ + + + + +
+ {files.length > 0 && ( +
+ + {files.length} file{files.length > 1 ? "s" : ""} selected +
+ )} +
+
+ + {"Select files to use for context"} + +
+ {files.length > 0 && ( + + )} +
+ ) +} diff --git a/src/components/batu/components/lmstudio-url.tsx b/src/components/batu/components/lmstudio-url.tsx new file mode 100644 index 0000000..ad42752 --- /dev/null +++ b/src/components/batu/components/lmstudio-url.tsx @@ -0,0 +1,46 @@ +"use client" + +import { useEffect, useState } from "react" +import { Input } from "../components/ui/input" +import { Label } from "../components/ui/label" +import { Button } from "../components/ui/button" +import { EyeIcon, EyeOffIcon, SaveIcon } from "lucide-react" + +interface LMUrlInputProps { + lmurl: string + setlmurl: (key: string) => void +} + +export default function LMStudioURL({ lmurl, setlmurl }: LMUrlInputProps) { + // const [showKey, setShowKey] = useState(false) + const [inputValue, setInputValue] = useState(lmurl) + useEffect(()=>{ + setInputValue(lmurl) + },[lmurl]) + + const handleSave = () => { + setlmurl(inputValue) + localStorage.setItem("lmstudio_url", inputValue) + } + + return ( +
+ +
+
+ setInputValue(e.target.value)} + placeholder="LM Studio IP" + className="pr-10" + /> +
+ +
+
+ ) +} diff --git a/src/components/batu/components/localmodelname.tsx b/src/components/batu/components/localmodelname.tsx new file mode 100644 index 0000000..7d34fee --- /dev/null +++ b/src/components/batu/components/localmodelname.tsx @@ -0,0 +1,45 @@ +"use client" + +import { useEffect, useState } from "react" +import { Input } from "../components/ui/input" +import { Label } from "../components/ui/label" +import { Button } from "../components/ui/button" +import { EyeIcon, EyeOffIcon, SaveIcon } from "lucide-react" + +interface LMmodelnameProps { + model_name: string + set_model_name: (key: string) => void +} + +export default function LMStudioModelName({ model_name, set_model_name }: LMmodelnameProps) { + // const [showKey, setShowKey] = useState(false) + const [inputValue, setInputValue] = useState(model_name) + useEffect(()=>{ + setInputValue(model_name) + },[model_name]) + const handleSave = () => { + set_model_name(inputValue) + localStorage.setItem("lmstudio_model_name", inputValue) + } + + return ( +
+ +
+
+ setInputValue(e.target.value)} + placeholder="LM Studio Model name" + className="pr-10" + /> +
+ +
+
+ ) +} diff --git a/src/components/batu/components/markdown-renderer.tsx b/src/components/batu/components/markdown-renderer.tsx new file mode 100644 index 0000000..9217de6 --- /dev/null +++ b/src/components/batu/components/markdown-renderer.tsx @@ -0,0 +1,33 @@ +'use client'; + +import React from 'react'; +import { ScrollArea } from '../components/ui/scroll-area'; +import { Markdown } from './markdown'; +import { cn } from '../lib/utils'; + +interface MarkdownRendererProps { + content: string; + className?: string; +} + +/** + * Renderer for Markdown content with scrollable container + */ +export function MarkdownRenderer({ + content, + className +}: MarkdownRendererProps) { + return ( +
+ +
+ + {content} + +
+
+
+ ); +} \ No newline at end of file diff --git a/src/components/batu/components/markdown.tsx b/src/components/batu/components/markdown.tsx new file mode 100644 index 0000000..46fb1bd --- /dev/null +++ b/src/components/batu/components/markdown.tsx @@ -0,0 +1,211 @@ +/* eslint-disable @typescript-eslint/no-explicit-any */ +import { cn } from '../lib/utils'; +import { marked } from 'marked'; +import { memo, useId, useMemo } from 'react'; +import ReactMarkdown, { Components } from 'react-markdown'; +import remarkGfm from 'remark-gfm'; +import { CodeBlock, CodeBlockCode } from './codeblock'; +import React from 'react'; + +export type MarkdownProps = { + children: string; + id?: string; + className?: string; + components?: Partial; +}; + +function parseMarkdownIntoBlocks(markdown: string): string[] { + const tokens = marked.lexer(markdown); + return tokens.map((token: any) => token.raw); +} + +function extractLanguage(className?: string): string { + + if (!className) return 'plaintext'; + const match = className.match(/language-(\w+)/); + return match ? match[1] : 'plaintext'; +} + +const INITIAL_COMPONENTS: Partial = { + code: function CodeComponent({ className, children, ...props }: any) { + const isInline = + !props.node?.position?.start.line || + props.node?.position?.start.line === props.node?.position?.end.line; + + if (isInline) { + return ( + + {children} + + ); + } + + let language = extractLanguage(className); + language=(language==="plantuml")?"plaintext":language + + return ( + + + + ); + }, + pre: function PreComponent({ children }: any) { + return <>{children}; + }, + ul: function UnorderedList({ children, ...props }: any) { + return ( +
    + {children} +
+ ); + }, + ol: function OrderedList({ children, ...props }: any) { + return ( +
    + {children} +
+ ); + }, + li: function ListItem({ children, ...props }: any) { + return ( +
  • + {children} +
  • + ); + }, + h1: function H1({ children, ...props }: any) { + return ( +

    + {children} +

    + ); + }, + h2: function H2({ children, ...props }: any) { + return ( +

    + {children} +

    + ); + }, + h3: function H3({ children, ...props }: any) { + return ( +

    + {children} +

    + ); + }, + blockquote: function Blockquote({ children, ...props }: any) { + return ( +
    + {children} +
    + ); + }, + a: function Anchor({ children, href, ...props }: any) { + return ( + + {children} + + ); + }, + table: function Table({ children, ...props }: any) { + return ( + + {children} +
    + ); + }, + th: function TableHeader({ children, ...props }: any) { + return ( + + {children} + + ); + }, + td: function TableCell({ children, ...props }: any) { + return ( + + {children} + + ); + }, +}; + +const MemoizedMarkdownBlock = memo( + function MarkdownBlock({ + content, + components = INITIAL_COMPONENTS, + }: { + content: string; + components?: Partial; + }) { + return ( + + {content} + + ); + }, + function propsAreEqual(prevProps: any, nextProps: any) { + return prevProps.content === nextProps.content; + }, +); + +MemoizedMarkdownBlock.displayName = 'MemoizedMarkdownBlock'; + +function MarkdownComponent({ + children, + id, + className, + components = INITIAL_COMPONENTS, +}: MarkdownProps) { + const generatedId = useId(); + const blockId = id ?? generatedId; + const blocks = useMemo(() => parseMarkdownIntoBlocks(children), [children]); + + return ( +
    + {blocks.map((block, index) => ( + + ))} +
    + ); +} + +const Markdown = memo(MarkdownComponent); +Markdown.displayName = 'Markdown'; + +export { Markdown }; \ No newline at end of file diff --git a/src/components/batu/components/message-item.tsx b/src/components/batu/components/message-item.tsx new file mode 100644 index 0000000..95ce4a8 --- /dev/null +++ b/src/components/batu/components/message-item.tsx @@ -0,0 +1,162 @@ +"use client" + +import type { Message } from "../lib/types" +import { UserIcon, BotIcon, CopyIcon, GitBranchIcon, RefreshCw } from "lucide-react" +import { cn } from "../lib/utils" +import { format } from "date-fns" +// import ReactMarkdown from "react-markdown" +import {Markdown} from "./markdown" +// import { Prism as SyntaxHighlighter } from "react-syntax-highlighter" +// import { vscDarkPlus } from "react-syntax-highlighter/dist/esm/styles/prism" +import { useEffect, useState } from "react" +import { Button } from "../components/ui/button" + +interface MessageItemProps { + message: Message + isStreaming?: boolean + onCopy: () => void + onBranch: () => void + setdsm: any + setmts: any +} + +export default function MessageItem({ message, isStreaming = false, onCopy, onBranch,setdsm,setmts }: MessageItemProps) { + const isUser = message.role === "user" + const [showCursor, setShowCursor] = useState(true) + const [isHovered, setIsHovered] = useState(false) + + // Blinking cursor effect for streaming messages + useEffect(() => { + if (!isStreaming) return + + const interval = setInterval(() => { + setShowCursor((prev) => !prev) + }, 500) + + return () => clearInterval(interval) + }, [isStreaming]) + + // Custom renderer for code blocks + // const components = { + // code({ node, inline, className, children, ...props }: any) { + // const match = /language-(\w+)/.exec(className || "") + // return !inline && match ? ( + // + // {String(children).replace(/\n$/, "")} + // + // ) : ( + // + // {children} + // + // ) + // }, + // } + const Resend=()=>{ + setdsm(true) + setmts(message.content) + } + + return ( +
    setIsHovered(true)} + onMouseLeave={() => setIsHovered(false)}> +
    +
    + {/*
    + {isUser ? ( +
    + +
    + ) : ( +
    + +
    + )} +
    */} + +
    +
    + + {/* {isUser ? "You" : "AI Assistant"} */} + {message.model && !isUser && ( + ({getModelDisplayName(message.model)}) + )} + + {/* + {format(new Date(message.timestamp), "MMM d, h:mm a")} + */} +
    + +
    + {message.content} + {isStreaming && showCursor && } +
    +
    + + +
    + {!isStreaming && ( +
    + + + +
    + )} +
    +
    + ) +} + +// Helper function to get a consistent color based on model name +function getModelColor(modelId: string): string { + const colors = [ + "purple-500", + "pink-500", + "rose-500", + "red-500", + "orange-500", + "amber-500", + "yellow-500", + "lime-500", + "green-500", + "emerald-500", + "teal-500", + "cyan-500", + "sky-500", + "blue-500", + "indigo-500", + "violet-500", + ] + + // Simple hash function to get consistent color + let hash = 0 + for (let i = 0; i < modelId.length; i++) { + hash = modelId.charCodeAt(i) + ((hash << 5) - hash) + } + + const index = Math.abs(hash) % colors.length + return colors[index] +} + +// Helper function to get a display name from model ID +function getModelDisplayName(modelId: string): string { + // Extract the model name from the provider/model format + const parts = modelId.split("/") + return parts.length > 1 ? parts[1] : modelId +} diff --git a/src/components/batu/components/model-selection-dialog.tsx b/src/components/batu/components/model-selection-dialog.tsx new file mode 100644 index 0000000..4ffdc5e --- /dev/null +++ b/src/components/batu/components/model-selection-dialog.tsx @@ -0,0 +1,245 @@ +"use client" + +import { useState, useEffect } from "react" +import { Dialog, DialogContent, DialogHeader, DialogTitle } from "../components/ui/dialog" +import { BotIcon, CloudIcon, EyeIcon, FileIcon, Loader2 } from "lucide-react" +import { cn } from "../lib/utils" +import { ScrollArea } from "../components/ui/scroll-area" +import { Input } from "../components/ui/input" +import { Badge } from "../components/ui/badge" +import Marquee from "react-fast-marquee"; +import type { Chat, BranchPoint, ModelRow, OpenRouterModel } from "../lib/types" + +interface ModelSelectionDialogProps { + isOpen: boolean + onClose: () => void + models: any[] + selectedModel: string + onSelectModel: (modelId: string) => void + apiKey: string +} + +export default function ModelSelectionDialog({ + isOpen, + onClose, + models, + selectedModel, + onSelectModel, + apiKey, +}: ModelSelectionDialogProps) { + const [isLoading, setIsLoading] = useState(false) + const [filteredModels, setFilteredModels] = useState([]) + const [searchQuery, setSearchQuery] = useState("") + + // useEffect(() => { + // if (!apiKey || models.length > 0) return + + // const fetchModels = async () => { + // setIsLoading(true) + // try { + // const response = await fetch("https://openrouter.ai/api/v1/models", { + // headers: { + // Authorization: `Bearer ${apiKey}`, + // }, + // }) + + // if (!response.ok) { + // throw new Error("Failed to fetch models") + // } + + // const data = await response.json() + // // Models are fetched in the parent component + // } catch (err) { + // console.error("Error fetching models:", err) + // } finally { + // setIsLoading(false) + // } + // } + + // fetchModels() + // }, [apiKey, models.length]) + + // Filter models based on search query + useEffect(() => { + if (!models) { + setFilteredModels([]) + return + } + + if (!searchQuery) { + setFilteredModels(models) + return + } + + const filtered = models.filter((model) => { + const modelName = model.id.toLowerCase() + const provider = model.id.split("/")[0].toLowerCase() + const modelId = model.id.split("/").pop().toLowerCase() + return ( + modelName.includes(searchQuery.toLowerCase()) || + provider.includes(searchQuery.toLowerCase()) || + modelId.includes(searchQuery.toLowerCase()) + ) + }) + + setFilteredModels(filtered) + }, [models, searchQuery]) + + const HoverMarqueeItem = ({ text }: { text: string }) => { + const [isHovered, setIsHovered] = useState(false); + + return ( +
    setIsHovered(true)} + onMouseLeave={() => setIsHovered(false)} + className="text-center w-full" + > + + {text} + +
    + ); + }; + + // Get a random color for the model icon + const getModelColor = (modelId: string): string => { + const colors = [ + "bg-purple-500", + "bg-pink-500", + "bg-rose-500", + "bg-red-500", + "bg-orange-500", + "bg-amber-500", + "bg-yellow-500", + "bg-lime-500", + "bg-green-500", + "bg-emerald-500", + "bg-teal-500", + "bg-cyan-500", + "bg-sky-500", + "bg-blue-500", + "bg-indigo-500", + "bg-violet-500", + ] + + // Simple hash function to get consistent color + let hash = 0 + for (let i = 0; i < modelId.length; i++) { + hash = modelId.charCodeAt(i) + ((hash << 5) - hash) + } + + const index = Math.abs(hash) % colors.length + return colors[index] + } + const [modelcount, setmodelcount] = useState(10) + + // Format pricing to be more readable + // const formatPrice = (price: string) => { + // if (!price) return "N/A" + // const numPrice = Number.parseFloat(price) + // if (numPrice === 0) return "Free" + // return `$${numPrice.toFixed(7)}` + // } + // const [isHovered, setIsHovered] = useState(false); + return ( + !open && onClose()}> + + + Select a Model + + +
    + setSearchQuery(e.target.value)} + className="w-full" + /> +
    + + {isLoading ? ( +
    + +
    + ) : ( + // +
    + {filteredModels.slice(0, modelcount).map((model:OpenRouterModel) => ( +
    onSelectModel(model.id)} + > +
    + +
    + +
    + +

    + {model.id.split("/")[0]} +

    +
    +
    + + {(model.supported_parameters.includes("include_reasoning") || model.supported_parameters.includes("reasoning"))?:""} + {model.architecture.input_modalities.includes("image")?:""} + {(model.architecture.input_modalities.includes("file") )?:""} +
    +
    + + {model.context_length.toLocaleString()} tokens + + + {/*
    + Input: + {formatPrice(model.pricing?.prompt)} +
    + +
    + Output: + {formatPrice(model.pricing?.completion)} +
    */} +
    +
    + ))} + {modelcount+10 < filteredModels.length && (
    setmodelcount( modelcount+10)} + > + + +
    +

    + More models +

    +
    + + +
    )} +
    + //
    + )} +
    +
    + ) +} diff --git a/src/components/batu/components/model-selector.tsx b/src/components/batu/components/model-selector.tsx new file mode 100644 index 0000000..a7989a9 --- /dev/null +++ b/src/components/batu/components/model-selector.tsx @@ -0,0 +1,98 @@ +"use client" + +import { useEffect, useState } from "react" +import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from "../components/ui/select" +import { Label } from "../components/ui/label" +import { Loader2 } from "lucide-react" +// import type { Model } from "../lib/types" + +interface ModelSelectorProps { + apiKey: string + selectedModel: string + setSelectedModel: (model: string) => void +} + +export default function ModelSelector({ apiKey, selectedModel, setSelectedModel }: ModelSelectorProps) { + const [models, setModels] = useState([]) + const [isLoading, setIsLoading] = useState(false) + const [error, setError] = useState(null) + + useEffect(() => { + if (!apiKey) return + + const fetchModels = async () => { + setIsLoading(true) + setError(null) + + try { + const response = await fetch("https://openrouter.ai/api/v1/models", { + headers: { + Authorization: `Bearer ${apiKey}`, + }, + }) + + if (!response.ok) { + throw new Error("Failed to fetch models") + } + + const data = await response.json() + + // Filter for free models (where pricing is 0) + const freeModels = data.data.filter((model: any) => { + return Number.parseFloat(model.pricing?.prompt) <= 0 && Number.parseFloat(model.pricing?.completion) <= 0 + }) + + setModels( + freeModels.map((model: any) => ({ + id: model.id, + name: model.name || model.id.split("/").pop(), + provider: model.id.split("/")[0], + })), + ) + + // Set the first model as selected if none is selected + if (freeModels.length > 0 && !selectedModel) { + setSelectedModel(freeModels[0].id) + } + } catch (err) { + console.error("Error fetching models:", err) + setError(err instanceof Error ? err.message : "Failed to fetch models") + } finally { + setIsLoading(false) + } + } + + fetchModels() + }, [apiKey, selectedModel, setSelectedModel]) + + return ( +
    + + +
    + ) +} diff --git a/src/components/batu/components/theme-provider.tsx b/src/components/batu/components/theme-provider.tsx new file mode 100644 index 0000000..55c2f6e --- /dev/null +++ b/src/components/batu/components/theme-provider.tsx @@ -0,0 +1,11 @@ +'use client' + +import * as React from 'react' +import { + ThemeProvider as NextThemesProvider, + type ThemeProviderProps, +} from 'next-themes' + +export function ThemeProvider({ children, ...props }: ThemeProviderProps) { + return {children} +} diff --git a/src/components/batu/components/ui/accordion.tsx b/src/components/batu/components/ui/accordion.tsx new file mode 100644 index 0000000..1fc96f6 --- /dev/null +++ b/src/components/batu/components/ui/accordion.tsx @@ -0,0 +1,58 @@ +"use client" + +import * as React from "react" +import * as AccordionPrimitive from "@radix-ui/react-accordion" +import { ChevronDown } from "lucide-react" + +import { cn } from "../../lib/utils" + +const Accordion = AccordionPrimitive.Root + +const AccordionItem = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>(({ className, ...props }, ref) => ( + +)) +AccordionItem.displayName = "AccordionItem" + +const AccordionTrigger = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>(({ className, children, ...props }, ref) => ( + + svg]:rotate-180", + className + )} + {...props} + > + {children} + + + +)) +AccordionTrigger.displayName = AccordionPrimitive.Trigger.displayName + +const AccordionContent = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>(({ className, children, ...props }, ref) => ( + +
    {children}
    +
    +)) + +AccordionContent.displayName = AccordionPrimitive.Content.displayName + +export { Accordion, AccordionItem, AccordionTrigger, AccordionContent } diff --git a/src/components/batu/components/ui/alert-dialog.tsx b/src/components/batu/components/ui/alert-dialog.tsx new file mode 100644 index 0000000..58c23d1 --- /dev/null +++ b/src/components/batu/components/ui/alert-dialog.tsx @@ -0,0 +1,141 @@ +"use client" + +import * as React from "react" +import * as AlertDialogPrimitive from "@radix-ui/react-alert-dialog" + +import { cn } from "../../lib/utils" +import { buttonVariants } from "../../components/ui/button" + +const AlertDialog = AlertDialogPrimitive.Root + +const AlertDialogTrigger = AlertDialogPrimitive.Trigger + +const AlertDialogPortal = AlertDialogPrimitive.Portal + +const AlertDialogOverlay = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>(({ className, ...props }, ref) => ( + +)) +AlertDialogOverlay.displayName = AlertDialogPrimitive.Overlay.displayName + +const AlertDialogContent = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>(({ className, ...props }, ref) => ( + + + + +)) +AlertDialogContent.displayName = AlertDialogPrimitive.Content.displayName + +const AlertDialogHeader = ({ + className, + ...props +}: React.HTMLAttributes) => ( +
    +) +AlertDialogHeader.displayName = "AlertDialogHeader" + +const AlertDialogFooter = ({ + className, + ...props +}: React.HTMLAttributes) => ( +
    +) +AlertDialogFooter.displayName = "AlertDialogFooter" + +const AlertDialogTitle = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>(({ className, ...props }, ref) => ( + +)) +AlertDialogTitle.displayName = AlertDialogPrimitive.Title.displayName + +const AlertDialogDescription = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>(({ className, ...props }, ref) => ( + +)) +AlertDialogDescription.displayName = + AlertDialogPrimitive.Description.displayName + +const AlertDialogAction = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>(({ className, ...props }, ref) => ( + +)) +AlertDialogAction.displayName = AlertDialogPrimitive.Action.displayName + +const AlertDialogCancel = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>(({ className, ...props }, ref) => ( + +)) +AlertDialogCancel.displayName = AlertDialogPrimitive.Cancel.displayName + +export { + AlertDialog, + AlertDialogPortal, + AlertDialogOverlay, + AlertDialogTrigger, + AlertDialogContent, + AlertDialogHeader, + AlertDialogFooter, + AlertDialogTitle, + AlertDialogDescription, + AlertDialogAction, + AlertDialogCancel, +} diff --git a/src/components/batu/components/ui/alert.tsx b/src/components/batu/components/ui/alert.tsx new file mode 100644 index 0000000..e9286a3 --- /dev/null +++ b/src/components/batu/components/ui/alert.tsx @@ -0,0 +1,59 @@ +import * as React from "react" +import { cva, type VariantProps } from "class-variance-authority" + +import { cn } from "../../lib/utils" + +const alertVariants = cva( + "relative w-full rounded-lg border p-4 [&>svg~*]:pl-7 [&>svg+div]:translate-y-[-3px] [&>svg]:absolute [&>svg]:left-4 [&>svg]:top-4 [&>svg]:text-foreground", + { + variants: { + variant: { + default: "bg-background text-foreground", + destructive: + "border-destructive/50 text-destructive dark:border-destructive [&>svg]:text-destructive", + }, + }, + defaultVariants: { + variant: "default", + }, + } +) + +const Alert = React.forwardRef< + HTMLDivElement, + React.HTMLAttributes & VariantProps +>(({ className, variant, ...props }, ref) => ( +
    +)) +Alert.displayName = "Alert" + +const AlertTitle = React.forwardRef< + HTMLParagraphElement, + React.HTMLAttributes +>(({ className, ...props }, ref) => ( +
    +)) +AlertTitle.displayName = "AlertTitle" + +const AlertDescription = React.forwardRef< + HTMLParagraphElement, + React.HTMLAttributes +>(({ className, ...props }, ref) => ( +
    +)) +AlertDescription.displayName = "AlertDescription" + +export { Alert, AlertTitle, AlertDescription } diff --git a/src/components/batu/components/ui/aspect-ratio.tsx b/src/components/batu/components/ui/aspect-ratio.tsx new file mode 100644 index 0000000..d6a5226 --- /dev/null +++ b/src/components/batu/components/ui/aspect-ratio.tsx @@ -0,0 +1,7 @@ +"use client" + +import * as AspectRatioPrimitive from "@radix-ui/react-aspect-ratio" + +const AspectRatio = AspectRatioPrimitive.Root + +export { AspectRatio } diff --git a/src/components/batu/components/ui/avatar.tsx b/src/components/batu/components/ui/avatar.tsx new file mode 100644 index 0000000..9122baa --- /dev/null +++ b/src/components/batu/components/ui/avatar.tsx @@ -0,0 +1,50 @@ +"use client" + +import * as React from "react" +import * as AvatarPrimitive from "@radix-ui/react-avatar" + +import { cn } from "../../lib/utils" + +const Avatar = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>(({ className, ...props }, ref) => ( + +)) +Avatar.displayName = AvatarPrimitive.Root.displayName + +const AvatarImage = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>(({ className, ...props }, ref) => ( + +)) +AvatarImage.displayName = AvatarPrimitive.Image.displayName + +const AvatarFallback = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>(({ className, ...props }, ref) => ( + +)) +AvatarFallback.displayName = AvatarPrimitive.Fallback.displayName + +export { Avatar, AvatarImage, AvatarFallback } diff --git a/src/components/batu/components/ui/badge.tsx b/src/components/batu/components/ui/badge.tsx new file mode 100644 index 0000000..c2466e3 --- /dev/null +++ b/src/components/batu/components/ui/badge.tsx @@ -0,0 +1,29 @@ +import type * as React from "react" +import { cva, type VariantProps } from "class-variance-authority" + +import { cn } from "../../lib/utils" + +const badgeVariants = cva( + "inline-flex items-center rounded-full border px-2.5 py-0.5 text-xs font-semibold transition-colors focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2", + { + variants: { + variant: { + default: "border-transparent bg-primary text-primary-foreground hover:bg-primary/80", + secondary: "border-transparent bg-secondary text-secondary-foreground hover:bg-secondary/80", + destructive: "border-transparent bg-destructive text-destructive-foreground hover:bg-destructive/80", + outline: "text-foreground", + }, + }, + defaultVariants: { + variant: "default", + }, + }, +) + +export interface BadgeProps extends React.HTMLAttributes, VariantProps {} + +function Badge({ className, variant, ...props }: BadgeProps) { + return
    +} + +export { Badge, badgeVariants } diff --git a/src/components/batu/components/ui/breadcrumb.tsx b/src/components/batu/components/ui/breadcrumb.tsx new file mode 100644 index 0000000..c1720a5 --- /dev/null +++ b/src/components/batu/components/ui/breadcrumb.tsx @@ -0,0 +1,115 @@ +import * as React from "react" +import { Slot } from "@radix-ui/react-slot" +import { ChevronRight, MoreHorizontal } from "lucide-react" + +import { cn } from "../../lib/utils" + +const Breadcrumb = React.forwardRef< + HTMLElement, + React.ComponentPropsWithoutRef<"nav"> & { + separator?: React.ReactNode + } +>(({ ...props }, ref) =>