├── .gitignore ├── tools └── shanatest │ ├── .gitignore │ ├── Cargo.toml │ ├── src │ └── main.rs │ └── Cargo.lock ├── misc ├── test │ ├── config2.toml │ └── config1.toml ├── config.toml ├── shana.portal ├── org.freedesktop.impl.portal.desktop.shana.service.in └── xdg-desktop-portal-shana.service.in ├── show ├── savefile.png └── choosefile.png ├── .github ├── workflows │ ├── typos.yml │ └── release.yml └── dependabot.yml ├── Cargo.toml ├── archlinux ├── xdg-desktop-portal-shana.install └── PKGBUILD ├── src ├── backends.rs ├── config.rs ├── protaltypes.rs └── main.rs ├── README.md ├── meson.build └── Cargo.lock /.gitignore: -------------------------------------------------------------------------------- 1 | target 2 | -------------------------------------------------------------------------------- /tools/shanatest/.gitignore: -------------------------------------------------------------------------------- 1 | /target 2 | -------------------------------------------------------------------------------- /misc/test/config2.toml: -------------------------------------------------------------------------------- 1 | open_file = "Kde" 2 | save_file = "Gnome" 3 | -------------------------------------------------------------------------------- /misc/config.toml: -------------------------------------------------------------------------------- 1 | open_file = "Kde" 2 | save_file = "Gnome" 3 | 4 | [tips] 5 | open_file_when_folder = "Lxqt" -------------------------------------------------------------------------------- /show/savefile.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Decodetalkers/xdg-desktop-portal-shana/HEAD/show/savefile.png -------------------------------------------------------------------------------- /show/choosefile.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Decodetalkers/xdg-desktop-portal-shana/HEAD/show/choosefile.png -------------------------------------------------------------------------------- /misc/test/config1.toml: -------------------------------------------------------------------------------- 1 | open_file = "Kde" 2 | save_file = "Gnome" 3 | 4 | [tips] 5 | open_file_when_folder = "Lxqt" -------------------------------------------------------------------------------- /misc/shana.portal: -------------------------------------------------------------------------------- 1 | [portal] 2 | DBusName=org.freedesktop.impl.portal.desktop.shana 3 | Interfaces=org.freedesktop.impl.portal.FileChooser; 4 | -------------------------------------------------------------------------------- /misc/org.freedesktop.impl.portal.desktop.shana.service.in: -------------------------------------------------------------------------------- 1 | [D-BUS Service] 2 | Name=org.freedesktop.impl.portal.desktop.shana 3 | Exec=@xdg_install_dir@/xdg-desktop-portal-shana 4 | SystemdService=xdg-desktop-portal-shana.service 5 | -------------------------------------------------------------------------------- /misc/xdg-desktop-portal-shana.service.in: -------------------------------------------------------------------------------- 1 | [Unit] 2 | Description=Xdg Desktop Portal for other portal 3 | PartOf=graphical-session.target 4 | After=graphical-session.target 5 | 6 | [Service] 7 | Type=dbus 8 | BusName=org.freedesktop.impl.portal.desktop.shana 9 | ExecStart=@xdg_install_dir@/xdg-desktop-portal-shana 10 | Restart=on-failure 11 | -------------------------------------------------------------------------------- /tools/shanatest/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "shanatest" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html 7 | 8 | [dependencies] 9 | ashpd = { version = "0.4.0" } 10 | async-std = { version = "1.12.0", features = ["async-attributes","attributes"] } 11 | -------------------------------------------------------------------------------- /.github/workflows/typos.yml: -------------------------------------------------------------------------------- 1 | --- 2 | # yamllint disable rule:line-length 3 | name: check_typos 4 | 5 | on: # yamllint disable-line rule:truthy 6 | push: 7 | pull_request: 8 | branches: 9 | - '**' 10 | 11 | jobs: 12 | build: 13 | runs-on: ubuntu-latest 14 | 15 | steps: 16 | - uses: actions/checkout@v5 17 | 18 | - name: typos-action 19 | uses: crate-ci/typos@v1.38.1 20 | -------------------------------------------------------------------------------- /Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "xdg-desktop-portal-shana" 3 | version = "0.3.16" 4 | edition = "2024" 5 | 6 | # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html 7 | 8 | [dependencies] 9 | zbus = { version = "5", default-features = false, features = ["tokio", "url"] } 10 | tokio = { version = "1.48.0", features = ["full"] } 11 | serde = { version = "1.0", features = ["derive"] } 12 | tracing = "0.1.41" 13 | tracing-subscriber = "0.3.20" 14 | url = { version = "2.5", features = ["serde"] } 15 | serde_repr = "0.1" 16 | toml = "0.9.5" 17 | notify = "8.2.0" 18 | futures = "0.3.31" 19 | -------------------------------------------------------------------------------- /archlinux/xdg-desktop-portal-shana.install: -------------------------------------------------------------------------------- 1 | msg_blue() { 2 | printf "${blue}==>${bold} $1${all_off}\n" 3 | } 4 | 5 | note() { 6 | printf "${blue}==>${yellow} Note:${bold} $1${all_off}\n" 7 | } 8 | 9 | all_off="$(tput sgr0)" 10 | bold="${all_off}$(tput bold)" 11 | blue="${bold}$(tput setaf 4)" 12 | yellow="${bold}$(tput setaf 3)" 13 | post_install() { 14 | note # 15 | msg_blue " create ~/.config/xdg-desktop-portal-shana/config.toml to custom which portal to use." 16 | msg_blue " for more info: https://github.com/Decodetalkers/xdg-desktop-portal-shana" 17 | } 18 | post_upgrade() { 19 | post_install 20 | } 21 | 22 | -------------------------------------------------------------------------------- /archlinux/PKGBUILD: -------------------------------------------------------------------------------- 1 | pkgname=xdg-desktop-portal-shana 2 | pkgver=0.3.6 3 | pkgrel=1.0 4 | pkgdesc='xdg-desktop-portal-shana' 5 | arch=('x86_64' 'aarch64') 6 | pkgdesc='A filechooser portal backend for any desktop environment' 7 | url='https://github.com/Decodetalkers/xdg-desktop-portal-shana' 8 | install=''$pkgname'.install' 9 | license=('MIT') 10 | depends=('xdg-desktop-portal') 11 | provides=("xdg-desktop-portal-impl") 12 | optdepends=("xdg-desktop-portal-gnome: provide gnome backend" 13 | "xdg-desktop-portal-kde: provide kde backend" 14 | "xdg-desktop-portal-gtk: provide gtk backend" 15 | "xdg-desktop-portal-lxqt: provide lxqt backend") 16 | makedepends=('git' 'ninja' 'meson' 'rust') 17 | source=('source.tar.gz') 18 | sha256sums=('SKIP') 19 | 20 | build() { 21 | meson setup build \ 22 | -Dprefix=/usr \ 23 | -Dlibexecdir=lib \ 24 | -Dbuildtype=release 25 | ninja -C build 26 | } 27 | package() { 28 | DESTDIR="$pkgdir" ninja -C build install 29 | } 30 | -------------------------------------------------------------------------------- /src/backends.rs: -------------------------------------------------------------------------------- 1 | use zbus::{proxy, zvariant::ObjectPath}; 2 | 3 | #[derive(PartialEq, PartialOrd, Eq, Debug, Clone)] 4 | pub enum PortalSelect { 5 | Kde, 6 | Gnome, 7 | Lxqt, 8 | Gtk, 9 | Other(String), 10 | } 11 | use crate::protaltypes::{OpenFileOptions, SaveFileOptions, SaveFilesOptions, SelectedFiles}; 12 | 13 | #[proxy( 14 | interface = "org.freedesktop.impl.portal.FileChooser", 15 | default_path = "/org/freedesktop/portal/desktop" 16 | )] 17 | pub trait XdgDesktopFilePortal { 18 | fn open_file( 19 | &self, 20 | handle: ObjectPath<'_>, 21 | app_id: String, 22 | parent_window: String, 23 | title: String, 24 | options: OpenFileOptions, 25 | ) -> zbus::Result<(u32, SelectedFiles)>; 26 | fn save_file( 27 | &self, 28 | handle: ObjectPath<'_>, 29 | app_id: String, 30 | parent_window: String, 31 | title: String, 32 | options: SaveFileOptions, 33 | ) -> zbus::Result<(u32, SelectedFiles)>; 34 | fn save_files( 35 | &self, 36 | handle: ObjectPath<'_>, 37 | app_id: String, 38 | parent_window: String, 39 | title: String, 40 | options: SaveFilesOptions, 41 | ) -> zbus::Result<(u32, SelectedFiles)>; 42 | } 43 | -------------------------------------------------------------------------------- /.github/dependabot.yml: -------------------------------------------------------------------------------- 1 | # To get started with Dependabot version updates, you'll need to specify which 2 | # package ecosystems to update and where the package manifests are located. 3 | # Please see the documentation for all configuration options: 4 | # https://docs.github.com/github/administering-a-repository/configuration-options-for-dependency-updates 5 | 6 | # docs 7 | # https://docs.github.com/en/code-security/dependabot/dependabot-version-updates/configuration-options-for-the-dependabot.yml-file 8 | version: 2 9 | updates: 10 | - package-ecosystem: "cargo" 11 | directory: "/" 12 | schedule: 13 | interval: "weekly" 14 | # We release on Tuesdays and open dependabot PRs will rebase after the 15 | # version bump and thus consume unnecessary workers during release, thus 16 | # let's open new ones on Wednesday 17 | day: "wednesday" 18 | ignore: 19 | - dependency-name: "*" 20 | update-types: ["version-update:semver-patch"] 21 | groups: 22 | # Only update polars as a whole as there are many subcrates that need to 23 | # be updated at once. We explicitly depend on some of them, so batch their 24 | # updates to not take up dependabot PR slots with dysfunctional PRs 25 | polars: 26 | patterns: 27 | - "polars" 28 | - "polars-*" 29 | - package-ecosystem: "github-actions" 30 | directory: "/" 31 | schedule: 32 | interval: "weekly" 33 | day: "wednesday" 34 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # xdg-desktop-portal-shana 2 | 3 | [![Packaging status](https://repology.org/badge/vertical-allrepos/xdg-desktop-portal-shana.svg)](https://repology.org/project/xdg-desktop-portal-shana/versions) 4 | 5 | 6 | ## How it works 7 | it just redirect other portal to it, `the portal of portal`, maybe? 8 | 9 | now it just use 10 | 11 | * Gnome 12 | * Kde 13 | * Gtk 14 | * Lxqt 15 | 16 | ## How to use 17 | 18 | create ~/.config/xdg-desktop-portal-shana/config.toml 19 | 20 | write like this 21 | 22 | ```toml 23 | open_file = "Kde" 24 | save_file = "Gnome" 25 | 26 | [tips] 27 | open_file_when_folder = "Lxqt" 28 | ``` 29 | 30 | The keyword you can use include 31 | 32 | `Gnome` 33 | `Kde` 34 | `Gtk` 35 | `Lxqt` 36 | 37 | or set 38 | 39 | ```toml 40 | open_file = "org.freedesktop.desktop.impl.lxqt" 41 | save_file = "org.freedesktop.desktop.impl.lxqt" 42 | save_files = "Gnome" 43 | ``` 44 | 45 | the key now is allowed to set the service path 46 | 47 | ## Show 48 | 49 | ![select file](./show/choosefile.png) 50 | 51 | ![save file](./show/savefile.png) 52 | 53 | ## How to use it 54 | 55 | to use it, you need to create ~/.config/xdg-desktop-portal/CURRENT_DESKTOP_NAME-portals.conf, for example, if you name is set as sway, you need to create sway.conf 56 | 57 | This will override the config under `/usr/share/xdg-desktop-portal/deskop-portals.conf`, it there is already one. 58 | 59 | ``` 60 | [preferred] 61 | default=luminous 62 | org.freedesktop.impl.portal.Settings=luminous;gtk 63 | org.freedesktop.impl.portal.FileChooser=shana 64 | ``` 65 | -------------------------------------------------------------------------------- /tools/shanatest/src/main.rs: -------------------------------------------------------------------------------- 1 | use ashpd::desktop::file_chooser::{Choice, FileFilter, OpenFileRequest, SaveFileRequest}; 2 | 3 | #[async_std::main] 4 | async fn main() -> ashpd::Result<()> { 5 | let files = OpenFileRequest::default() 6 | .title("open a file to read") 7 | .accept_label("read") 8 | .modal(true) 9 | .multiple(true) 10 | .choice( 11 | Choice::new("encoding", "Encoding", "latin15") 12 | .insert("utf8", "Unicode (UTF-8)") 13 | .insert("latin15", "Western"), 14 | ) 15 | // A trick to have a checkbox 16 | .choice(Choice::boolean("re-encode", "Re-encode", false)) 17 | .filter(FileFilter::new("SVG Image").mimetype("image/svg+xml")) 18 | .filter(FileFilter::new("JPEG Image").glob("*.jpg")) 19 | .current_filter(FileFilter::new("JPEG Image").glob("*.jpg")) 20 | .send() 21 | .await? 22 | .response()?; 23 | 24 | println!("{:#?}", files); 25 | 26 | let files = SaveFileRequest::default() 27 | .title("open a file to write") 28 | .accept_label("write") 29 | .current_name("image.jpg") 30 | .modal(true) 31 | //.filter(FileFilter::new("SVG Image").mimetype("image/svg+xml")) 32 | .filter(FileFilter::new("JPEG Image").glob("*.jpg")) 33 | .current_filter(FileFilter::new("JPEG Image").glob("*.jpg")) 34 | .send() 35 | .await? 36 | .response()?; 37 | 38 | println!("{:#?}", files); 39 | 40 | 41 | Ok(()) 42 | } 43 | -------------------------------------------------------------------------------- /.github/workflows/release.yml: -------------------------------------------------------------------------------- 1 | name: Build 2 | 3 | on: 4 | push: 5 | branches: 6 | - master 7 | tags: 8 | - v* 9 | pull_request: 10 | branches: 11 | - master 12 | concurrency: 13 | group: ${{ github.ref }} 14 | cancel-in-progress: true 15 | jobs: 16 | build: 17 | name: Build Binary 18 | strategy: 19 | matrix: 20 | os: 21 | - ubuntu-latest 22 | include: 23 | - os: ubuntu-latest 24 | target: x86_64-unknown-linux-gnu 25 | artifact_name: xdg-desktop-portal-shana 26 | 27 | runs-on: ${{ matrix.os }} 28 | steps: 29 | - uses: actions/checkout@v5 30 | - uses: dtolnay/rust-toolchain@stable 31 | with: 32 | targets: ${{ matrix.target }} 33 | - name: Build 34 | run: cargo build --verbose --release 35 | - name: Run tests 36 | run: cargo test --verbose 37 | - name: Upload artifacts 38 | uses: actions/upload-artifact@v5 39 | with: 40 | path: target/release/${{ matrix.artifact_name }} 41 | name: ${{ matrix.target }} 42 | release: 43 | permissions: 44 | contents: write 45 | if: startsWith(github.ref, 'refs/tags/v') 46 | needs: 47 | - build 48 | runs-on: ubuntu-latest 49 | steps: 50 | - uses: actions/download-artifact@v6 51 | - name: Show files 52 | run: | 53 | pwd 54 | find 55 | - name: Copy files 56 | run: | 57 | mkdir out 58 | mv x86_64-unknown-linux-gnu/xdg-desktop-portal-shana out/xdg-desktop-portal-shana-x86_64-unknown-linux-gnu 59 | cd out 60 | sha256sum * > sha256sum 61 | - name: Release 62 | uses: softprops/action-gh-release@v2 63 | with: 64 | files: out/* 65 | draft: true 66 | -------------------------------------------------------------------------------- /meson.build: -------------------------------------------------------------------------------- 1 | project( 2 | 'xdg-desktop-portal-shana', 3 | 'rust', 4 | version: '0.3.15', 5 | meson_version: '>= 1.1.0', 6 | ) 7 | 8 | cargo = find_program('cargo', version: '>= 1.80') 9 | 10 | find_program('rustc', version: '>= 1.80') 11 | 12 | if get_option('debug') 13 | command = [ 14 | cargo, 15 | 'build', 16 | '&&', 17 | 'cp', 18 | meson.global_source_root() / 'target' / 'debug' / meson.project_name(), 19 | '@OUTPUT@', 20 | ] 21 | else 22 | command = [ 23 | cargo, 24 | 'build', 25 | '--release', '&&', 26 | 'cp', 27 | meson.global_source_root() / 'target' / 'release' / meson.project_name(), 28 | '@OUTPUT@', 29 | ] 30 | endif 31 | 32 | prefix = get_option('prefix') 33 | 34 | xdg_install_dir = prefix / get_option('libexecdir') 35 | 36 | portal_dir = prefix / get_option('datadir') / 'xdg-desktop-portal' / 'portals' 37 | 38 | dbus1_dir = prefix / get_option('datadir') / 'dbus-1' / 'services' 39 | 40 | system_dir = prefix / get_option('libdir') / 'systemd' / 'user' 41 | global_conf = configuration_data() 42 | 43 | global_conf.set('xdg_install_dir', xdg_install_dir) 44 | 45 | configure_file( 46 | input: 'misc/xdg-desktop-portal-shana.service.in', 47 | output: 'xdg-desktop-portal-shana.service', 48 | configuration: global_conf, 49 | ) 50 | 51 | configure_file( 52 | input: 'misc/org.freedesktop.impl.portal.desktop.shana.service.in', 53 | output: 'org.freedesktop.impl.portal.desktop.shana.service', 54 | configuration: global_conf, 55 | ) 56 | 57 | custom_target( 58 | 'xdg-desktop-portal-shana', 59 | output: 'xdg-desktop-portal-shana', 60 | build_by_default: true, 61 | install: true, 62 | install_dir: xdg_install_dir, 63 | console: true, 64 | command: command, 65 | ) 66 | 67 | install_data('misc/shana.portal', install_dir: portal_dir) 68 | 69 | install_data( 70 | meson.project_build_root() / 'org.freedesktop.impl.portal.desktop.shana.service', 71 | install_dir: dbus1_dir, 72 | ) 73 | 74 | install_data( 75 | meson.project_build_root() / 'xdg-desktop-portal-shana.service', 76 | install_dir: system_dir, 77 | ) 78 | -------------------------------------------------------------------------------- /src/config.rs: -------------------------------------------------------------------------------- 1 | use serde::Deserialize; 2 | use std::io::Read; 3 | #[derive(Deserialize, PartialEq, Eq, Debug)] 4 | pub struct Config { 5 | pub open_file: String, 6 | pub save_file: String, 7 | pub save_files: Option, 8 | pub tips: Option, 9 | } 10 | 11 | #[derive(Deserialize, PartialEq, Eq, Debug)] 12 | pub struct Tips { 13 | pub open_file_when_folder: String, 14 | } 15 | 16 | impl Config { 17 | pub fn config_from_file() -> Option { 18 | let Ok(home) = std::env::var("HOME") else { 19 | return None; 20 | }; 21 | let config_path = std::path::Path::new(home.as_str()) 22 | .join(".config") 23 | .join("xdg-desktop-portal-shana") 24 | .join("config.toml"); 25 | let Ok(mut file) = std::fs::OpenOptions::new().read(true).open(config_path) else { 26 | return None; 27 | }; 28 | let mut buf = String::new(); 29 | if file.read_to_string(&mut buf).is_err() { 30 | return None; 31 | }; 32 | toml::from_str(&buf).unwrap_or(None) 33 | } 34 | } 35 | 36 | impl From for super::PortalSelect { 37 | fn from(value: String) -> Self { 38 | match value.as_str() { 39 | "Gnome" => Self::Gnome, 40 | "Kde" => Self::Kde, 41 | "Lxqt" => Self::Lxqt, 42 | "Gtk" => Self::Gtk, 43 | value => Self::Other(value.to_string()), 44 | } 45 | } 46 | } 47 | 48 | impl From> for super::ProtalConfig { 49 | fn from(value: Option) -> Self { 50 | match value { 51 | None => crate::ProtalConfig { 52 | savefile: crate::PortalSelect::Gtk, 53 | openfile: crate::PortalSelect::Gtk, 54 | savefiles: crate::PortalSelect::Gtk, 55 | openfile_casefolder: crate::PortalSelect::Gtk, 56 | }, 57 | Some(value) => crate::ProtalConfig { 58 | savefile: value.save_file.into(), 59 | openfile: value.open_file.clone().into(), 60 | savefiles: value.save_files.unwrap_or("Gtk".to_string()).into(), 61 | openfile_casefolder: match value.tips { 62 | None => value.open_file.into(), 63 | Some(v) => v.open_file_when_folder.into(), 64 | }, 65 | }, 66 | } 67 | } 68 | } 69 | 70 | #[test] 71 | fn tst_toml() { 72 | let config_src1 = include_str!("../misc/test/config1.toml"); 73 | let config1: super::ProtalConfig = Some(toml::from_str(config_src1).unwrap()).into(); 74 | assert_eq!( 75 | config1, 76 | super::ProtalConfig { 77 | openfile: crate::PortalSelect::Kde, 78 | savefile: crate::PortalSelect::Gnome, 79 | savefiles: crate::PortalSelect::Gtk, 80 | openfile_casefolder: crate::PortalSelect::Lxqt, 81 | } 82 | ); 83 | let config_src2 = include_str!("../misc/test/config2.toml"); 84 | let config2: super::ProtalConfig = Some(toml::from_str(config_src2).unwrap()).into(); 85 | assert_eq!( 86 | config2, 87 | super::ProtalConfig { 88 | openfile: crate::PortalSelect::Kde, 89 | savefile: crate::PortalSelect::Gnome, 90 | savefiles: crate::PortalSelect::Gtk, 91 | openfile_casefolder: crate::PortalSelect::Kde, 92 | } 93 | ); 94 | } 95 | -------------------------------------------------------------------------------- /src/protaltypes.rs: -------------------------------------------------------------------------------- 1 | use std::{ 2 | ffi::{CString, OsStr}, 3 | os::unix::ffi::OsStrExt, 4 | path::Path, 5 | }; 6 | 7 | use serde::{Deserialize, Serialize}; 8 | use serde_repr::Serialize_repr; 9 | use zbus::zvariant::{DeserializeDict, SerializeDict, Type}; 10 | 11 | /// A file name represented as a nul-terminated byte array. 12 | #[derive(Type, Debug, Default, PartialEq)] 13 | #[zvariant(signature = "ay")] 14 | pub struct FilePath(CString); 15 | 16 | impl AsRef for FilePath { 17 | fn as_ref(&self) -> &Path { 18 | OsStr::from_bytes(self.0.as_bytes()).as_ref() 19 | } 20 | } 21 | 22 | impl Serialize for FilePath { 23 | fn serialize(&self, serializer: S) -> Result 24 | where 25 | S: serde::Serializer, 26 | { 27 | serializer.serialize_bytes(self.0.as_bytes_with_nul()) 28 | } 29 | } 30 | 31 | impl<'de> Deserialize<'de> for FilePath { 32 | fn deserialize(deserializer: D) -> Result 33 | where 34 | D: serde::Deserializer<'de>, 35 | { 36 | let bytes = >::deserialize(deserializer)?; 37 | let c_string = CString::from_vec_with_nul(bytes) 38 | .map_err(|_| serde::de::Error::custom("Bytes are not nul-terminated"))?; 39 | 40 | Ok(Self(c_string)) 41 | } 42 | } 43 | 44 | // SelectedFiles 45 | #[derive(SerializeDict, DeserializeDict, Type, Debug, Default)] 46 | #[zvariant(signature = "dict")] 47 | pub struct SelectedFiles { 48 | pub uris: Vec, 49 | pub choices: Option>, 50 | pub current_filter: Option, 51 | // Only relevant for OpenFile 52 | pub writable: Option, 53 | } 54 | 55 | #[allow(dead_code)] 56 | impl SelectedFiles { 57 | pub fn from_path(path: Vec>) -> Self { 58 | Self { 59 | uris: path 60 | .iter() 61 | .map(url::Url::from_file_path) 62 | .filter_map(|urlunit| urlunit.ok()) 63 | .collect(), 64 | choices: None, 65 | current_filter: None, 66 | writable: None, 67 | } 68 | } 69 | } 70 | #[derive(Clone, Serialize, Deserialize, Type, Debug)] 71 | /// Presents the user with a choice to select from or as a checkbox. 72 | pub struct Choice(String, String, Vec<(String, String)>, String); 73 | 74 | #[derive(Clone, Serialize_repr, Deserialize, Debug, Type)] 75 | #[repr(u32)] 76 | pub enum FilterType { 77 | GlobPattern = 0, 78 | MimeType = 1, 79 | } 80 | 81 | #[derive(Clone, Serialize, Deserialize, Type, Debug)] 82 | pub struct FileFilter(String, Vec<(FilterType, String)>); 83 | 84 | #[allow(dead_code)] 85 | impl FileFilter { 86 | pub fn get_filters(&self) -> Vec<(FilterType, String)> { 87 | self.1.clone() 88 | } 89 | pub fn get_name(&self) -> String { 90 | self.0.clone() 91 | } 92 | } 93 | 94 | // filters contains all filters can only can select one at one time 95 | #[derive(SerializeDict, DeserializeDict, Type, Debug)] 96 | #[zvariant(signature = "dict")] 97 | pub struct OpenFileOptions { 98 | accept_label: Option, 99 | modal: Option, 100 | multiple: Option, 101 | pub directory: Option, 102 | filters: Option>, 103 | current_filter: Option, 104 | choices: Option>, 105 | current_folder: Option, 106 | } 107 | 108 | #[allow(dead_code)] 109 | impl OpenFileOptions { 110 | pub fn select_function(&self) -> SelectFunction { 111 | if let Some(true) = self.directory { 112 | SelectFunction::Folder { 113 | title: self.accept_label.clone().unwrap_or("OpenFold".to_string()), 114 | filters: self.filters.as_ref().unwrap_or(&vec![]).clone(), 115 | current_filter: self.current_filter.clone(), 116 | } 117 | } else { 118 | SelectFunction::File { 119 | title: self.accept_label.clone().unwrap_or("OpenFile".to_string()), 120 | filters: (self.filters.as_ref().unwrap_or(&vec![])).clone(), 121 | current_filter: self.current_filter.clone(), 122 | } 123 | } 124 | } 125 | } 126 | 127 | #[allow(dead_code)] 128 | pub enum SelectFunction { 129 | File { 130 | title: String, 131 | filters: Vec, 132 | current_filter: Option, 133 | }, 134 | Folder { 135 | title: String, 136 | filters: Vec, 137 | current_filter: Option, 138 | }, 139 | } 140 | 141 | // filters contains all filters can only can select one at one time 142 | #[derive(SerializeDict, DeserializeDict, Type, Debug)] 143 | #[zvariant(signature = "dict")] 144 | pub struct SaveFileOptions { 145 | accept_label: Option, 146 | modal: Option, 147 | multiple: Option, 148 | filters: Option>, 149 | current_filter: Option, 150 | choices: Option>, 151 | current_name: Option, 152 | current_folder: Option, 153 | current_file: Option, 154 | } 155 | 156 | #[derive(DeserializeDict, SerializeDict, Type, Debug)] 157 | #[zvariant(signature = "dict")] 158 | pub struct SaveFilesOptions { 159 | accept_label: Option, 160 | modal: Option, 161 | choices: Option>, 162 | current_folder: Option, 163 | files: Option>, 164 | } 165 | -------------------------------------------------------------------------------- /src/main.rs: -------------------------------------------------------------------------------- 1 | mod backends; 2 | mod config; 3 | mod protaltypes; 4 | use backends::*; 5 | use config::Config; 6 | use notify::EventKind; 7 | use protaltypes::{OpenFileOptions, SaveFileOptions, SaveFilesOptions, SelectedFiles}; 8 | use std::{error::Error, future::pending, sync::Arc}; 9 | use tokio::sync::Mutex; 10 | use zbus::{connection, fdo, interface, zvariant::ObjectPath}; 11 | 12 | use std::sync::OnceLock; 13 | 14 | use std::sync::LazyLock; 15 | 16 | use futures::{ 17 | SinkExt, StreamExt, 18 | channel::mpsc::{Receiver, channel}, 19 | }; 20 | use notify::{Event, RecommendedWatcher, RecursiveMode, Watcher}; 21 | use std::path::Path; 22 | 23 | static SETTING_CONFIG: LazyLock>> = 24 | LazyLock::new(|| Arc::new(Mutex::new(ProtalConfig::from(Config::config_from_file())))); 25 | 26 | async fn get_setting_config() -> ProtalConfig { 27 | let config = SETTING_CONFIG.lock().await; 28 | config.clone() 29 | } 30 | 31 | async fn update_setting_config() { 32 | let mut config = SETTING_CONFIG.lock().await; 33 | *config = ProtalConfig::from(Config::config_from_file()); 34 | } 35 | 36 | static SESSION: OnceLock = OnceLock::new(); 37 | 38 | async fn get_connection() -> zbus::Result { 39 | if let Some(cnx) = SESSION.get() { 40 | Ok(cnx.clone()) 41 | } else { 42 | let cnx = zbus::Connection::session().await?; 43 | SESSION.set(cnx.clone()).expect("Can't reset a OnceCell"); 44 | Ok(cnx) 45 | } 46 | } 47 | 48 | struct Shana; 49 | 50 | #[derive(PartialEq, Debug, Eq, Clone)] 51 | struct ProtalConfig { 52 | savefile: PortalSelect, 53 | openfile: PortalSelect, 54 | savefiles: PortalSelect, 55 | openfile_casefolder: PortalSelect, 56 | } 57 | 58 | impl PortalSelect { 59 | fn service_path(&self) -> &str { 60 | match self { 61 | PortalSelect::Kde => "org.freedesktop.impl.portal.desktop.kde", 62 | PortalSelect::Gnome => "org.gnome.Nautilus", 63 | PortalSelect::Lxqt => "org.freedesktop.impl.portal.desktop.lxqt", 64 | PortalSelect::Gtk => "org.freedesktop.impl.portal.desktop.gtk", 65 | PortalSelect::Other(path) => path, 66 | } 67 | } 68 | } 69 | 70 | #[interface(name = "org.freedesktop.impl.portal.FileChooser")] 71 | impl Shana { 72 | async fn open_file( 73 | &self, 74 | handle: ObjectPath<'_>, 75 | app_id: String, 76 | parent_window: String, 77 | title: String, 78 | options: OpenFileOptions, 79 | ) -> fdo::Result<(u32, SelectedFiles)> { 80 | let connection = get_connection().await?; 81 | let backendconfig = get_setting_config().await; 82 | let portal_select = if let Some(true) = options.directory { 83 | backendconfig.openfile_casefolder 84 | } else { 85 | backendconfig.openfile 86 | }; 87 | let portal = XdgDesktopFilePortalProxy::builder(&connection) 88 | .destination(portal_select.service_path())? 89 | .build() 90 | .await?; 91 | 92 | let output = portal 93 | .open_file(handle, app_id, parent_window, title, options) 94 | .await?; 95 | 96 | Ok(output) 97 | } 98 | 99 | async fn save_file( 100 | &self, 101 | handle: ObjectPath<'_>, 102 | app_id: String, 103 | parent_window: String, 104 | title: String, 105 | options: SaveFileOptions, 106 | ) -> fdo::Result<(u32, SelectedFiles)> { 107 | let connection = get_connection().await?; 108 | let backendconfig = get_setting_config().await; 109 | let portal = XdgDesktopFilePortalProxy::builder(&connection) 110 | .destination(backendconfig.savefile.service_path())? 111 | .build() 112 | .await?; 113 | 114 | let output = portal 115 | .save_file(handle, app_id, parent_window, title, options) 116 | .await?; 117 | Ok(output) 118 | } 119 | 120 | async fn save_files( 121 | &self, 122 | handle: ObjectPath<'_>, 123 | app_id: String, 124 | parent_window: String, 125 | title: String, 126 | options: SaveFilesOptions, 127 | ) -> fdo::Result<(u32, SelectedFiles)> { 128 | let connection = get_connection().await?; 129 | let backendconfig = get_setting_config().await; 130 | // INFO: only gtk have savefiles, so if not use gnome or gtk, all fallback to gtk 131 | let portal = XdgDesktopFilePortalProxy::builder(&connection) 132 | .destination(backendconfig.savefiles.service_path())? 133 | .build() 134 | .await?; 135 | let output = portal 136 | .save_files(handle, app_id, parent_window, title, options) 137 | .await?; 138 | Ok(output) 139 | } 140 | } 141 | 142 | fn async_watcher() -> notify::Result<(RecommendedWatcher, Receiver>)> { 143 | let (mut tx, rx) = channel(1); 144 | 145 | // Automatically select the best implementation for your platform. 146 | // You can also access each implementation directly e.g. INotifyWatcher. 147 | let watcher = RecommendedWatcher::new( 148 | move |res| { 149 | futures::executor::block_on(async { 150 | tx.send(res).await.unwrap(); 151 | }) 152 | }, 153 | notify::Config::default(), 154 | )?; 155 | 156 | Ok((watcher, rx)) 157 | } 158 | 159 | async fn async_watch>(path: P) -> notify::Result<()> { 160 | let (mut watcher, mut rx) = async_watcher()?; 161 | 162 | // Add a path to be watched. All files and directories at that path and 163 | // below will be monitored for changes. 164 | watcher.watch(path.as_ref(), RecursiveMode::Recursive)?; 165 | 166 | while let Some(res) = rx.next().await { 167 | match res { 168 | Ok(Event { 169 | kind: EventKind::Modify(_), 170 | .. 171 | }) 172 | | Ok(Event { 173 | kind: EventKind::Create(_), 174 | .. 175 | }) => { 176 | update_setting_config().await; 177 | } 178 | Err(e) => println!("watch error: {:?}", e), 179 | _ => {} 180 | } 181 | } 182 | 183 | Ok(()) 184 | } 185 | 186 | #[tokio::main] 187 | async fn main() -> Result<(), Box> { 188 | unsafe { std::env::set_var("RUST_LOG", "xdg-desktop-protal-shana=info") }; 189 | tracing_subscriber::fmt().init(); 190 | tracing::info!("Shana Start"); 191 | let _conn = connection::Builder::session()? 192 | .name("org.freedesktop.impl.portal.desktop.shana")? 193 | .serve_at("/org/freedesktop/portal/desktop", Shana)? 194 | .build() 195 | .await?; 196 | tokio::spawn(async move { 197 | let Ok(home) = std::env::var("HOME") else { 198 | return; 199 | }; 200 | let config_path = std::path::Path::new(home.as_str()) 201 | .join(".config") 202 | .join("xdg-desktop-portal-shana"); 203 | if let Err(e) = async_watch(config_path).await { 204 | tracing::info!("Maybe config file is not exist, create one :{e}"); 205 | } 206 | }); 207 | 208 | pending::<()>().await; 209 | Ok(()) 210 | } 211 | -------------------------------------------------------------------------------- /tools/shanatest/Cargo.lock: -------------------------------------------------------------------------------- 1 | # This file is automatically @generated by Cargo. 2 | # It is not intended for manual editing. 3 | version = 3 4 | 5 | [[package]] 6 | name = "aho-corasick" 7 | version = "0.7.20" 8 | source = "registry+https://github.com/rust-lang/crates.io-index" 9 | checksum = "cc936419f96fa211c1b9166887b38e5e40b19958e5b895be7c1f93adec7071ac" 10 | dependencies = [ 11 | "memchr", 12 | ] 13 | 14 | [[package]] 15 | name = "ashpd" 16 | version = "0.4.0" 17 | source = "registry+https://github.com/rust-lang/crates.io-index" 18 | checksum = "31688b40eb5d739049f721d8405c33d3796b3f51f2bea84421a542dafe397e41" 19 | dependencies = [ 20 | "async-std", 21 | "enumflags2", 22 | "futures-channel", 23 | "futures-util", 24 | "once_cell", 25 | "rand", 26 | "serde", 27 | "serde_repr", 28 | "url", 29 | "zbus", 30 | ] 31 | 32 | [[package]] 33 | name = "async-attributes" 34 | version = "1.1.2" 35 | source = "registry+https://github.com/rust-lang/crates.io-index" 36 | checksum = "a3203e79f4dd9bdda415ed03cf14dae5a2bf775c683a00f94e9cd1faf0f596e5" 37 | dependencies = [ 38 | "quote", 39 | "syn 1.0.109", 40 | ] 41 | 42 | [[package]] 43 | name = "async-broadcast" 44 | version = "0.5.1" 45 | source = "registry+https://github.com/rust-lang/crates.io-index" 46 | checksum = "7c48ccdbf6ca6b121e0f586cbc0e73ae440e56c67c30fa0873b4e110d9c26d2b" 47 | dependencies = [ 48 | "event-listener", 49 | "futures-core", 50 | ] 51 | 52 | [[package]] 53 | name = "async-channel" 54 | version = "1.8.0" 55 | source = "registry+https://github.com/rust-lang/crates.io-index" 56 | checksum = "cf46fee83e5ccffc220104713af3292ff9bc7c64c7de289f66dae8e38d826833" 57 | dependencies = [ 58 | "concurrent-queue", 59 | "event-listener", 60 | "futures-core", 61 | ] 62 | 63 | [[package]] 64 | name = "async-executor" 65 | version = "1.5.1" 66 | source = "registry+https://github.com/rust-lang/crates.io-index" 67 | checksum = "6fa3dc5f2a8564f07759c008b9109dc0d39de92a88d5588b8a5036d286383afb" 68 | dependencies = [ 69 | "async-lock", 70 | "async-task", 71 | "concurrent-queue", 72 | "fastrand", 73 | "futures-lite", 74 | "slab", 75 | ] 76 | 77 | [[package]] 78 | name = "async-fs" 79 | version = "1.6.0" 80 | source = "registry+https://github.com/rust-lang/crates.io-index" 81 | checksum = "279cf904654eeebfa37ac9bb1598880884924aab82e290aa65c9e77a0e142e06" 82 | dependencies = [ 83 | "async-lock", 84 | "autocfg", 85 | "blocking", 86 | "futures-lite", 87 | ] 88 | 89 | [[package]] 90 | name = "async-global-executor" 91 | version = "2.3.1" 92 | source = "registry+https://github.com/rust-lang/crates.io-index" 93 | checksum = "f1b6f5d7df27bd294849f8eec66ecfc63d11814df7a4f5d74168a2394467b776" 94 | dependencies = [ 95 | "async-channel", 96 | "async-executor", 97 | "async-io", 98 | "async-lock", 99 | "blocking", 100 | "futures-lite", 101 | "once_cell", 102 | ] 103 | 104 | [[package]] 105 | name = "async-io" 106 | version = "1.13.0" 107 | source = "registry+https://github.com/rust-lang/crates.io-index" 108 | checksum = "0fc5b45d93ef0529756f812ca52e44c221b35341892d3dcc34132ac02f3dd2af" 109 | dependencies = [ 110 | "async-lock", 111 | "autocfg", 112 | "cfg-if", 113 | "concurrent-queue", 114 | "futures-lite", 115 | "log", 116 | "parking", 117 | "polling", 118 | "rustix", 119 | "slab", 120 | "socket2", 121 | "waker-fn", 122 | ] 123 | 124 | [[package]] 125 | name = "async-lock" 126 | version = "2.7.0" 127 | source = "registry+https://github.com/rust-lang/crates.io-index" 128 | checksum = "fa24f727524730b077666307f2734b4a1a1c57acb79193127dcc8914d5242dd7" 129 | dependencies = [ 130 | "event-listener", 131 | ] 132 | 133 | [[package]] 134 | name = "async-recursion" 135 | version = "1.0.4" 136 | source = "registry+https://github.com/rust-lang/crates.io-index" 137 | checksum = "0e97ce7de6cf12de5d7226c73f5ba9811622f4db3a5b91b55c53e987e5f91cba" 138 | dependencies = [ 139 | "proc-macro2", 140 | "quote", 141 | "syn 2.0.13", 142 | ] 143 | 144 | [[package]] 145 | name = "async-std" 146 | version = "1.12.0" 147 | source = "registry+https://github.com/rust-lang/crates.io-index" 148 | checksum = "62565bb4402e926b29953c785397c6dc0391b7b446e45008b0049eb43cec6f5d" 149 | dependencies = [ 150 | "async-attributes", 151 | "async-channel", 152 | "async-global-executor", 153 | "async-io", 154 | "async-lock", 155 | "crossbeam-utils", 156 | "futures-channel", 157 | "futures-core", 158 | "futures-io", 159 | "futures-lite", 160 | "gloo-timers", 161 | "kv-log-macro", 162 | "log", 163 | "memchr", 164 | "once_cell", 165 | "pin-project-lite", 166 | "pin-utils", 167 | "slab", 168 | "wasm-bindgen-futures", 169 | ] 170 | 171 | [[package]] 172 | name = "async-task" 173 | version = "4.4.0" 174 | source = "registry+https://github.com/rust-lang/crates.io-index" 175 | checksum = "ecc7ab41815b3c653ccd2978ec3255c81349336702dfdf62ee6f7069b12a3aae" 176 | 177 | [[package]] 178 | name = "async-trait" 179 | version = "0.1.68" 180 | source = "registry+https://github.com/rust-lang/crates.io-index" 181 | checksum = "b9ccdd8f2a161be9bd5c023df56f1b2a0bd1d83872ae53b71a84a12c9bf6e842" 182 | dependencies = [ 183 | "proc-macro2", 184 | "quote", 185 | "syn 2.0.13", 186 | ] 187 | 188 | [[package]] 189 | name = "atomic-waker" 190 | version = "1.1.1" 191 | source = "registry+https://github.com/rust-lang/crates.io-index" 192 | checksum = "1181e1e0d1fce796a03db1ae795d67167da795f9cf4a39c37589e85ef57f26d3" 193 | 194 | [[package]] 195 | name = "autocfg" 196 | version = "1.1.0" 197 | source = "registry+https://github.com/rust-lang/crates.io-index" 198 | checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" 199 | 200 | [[package]] 201 | name = "bitflags" 202 | version = "1.3.2" 203 | source = "registry+https://github.com/rust-lang/crates.io-index" 204 | checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" 205 | 206 | [[package]] 207 | name = "block-buffer" 208 | version = "0.10.4" 209 | source = "registry+https://github.com/rust-lang/crates.io-index" 210 | checksum = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71" 211 | dependencies = [ 212 | "generic-array", 213 | ] 214 | 215 | [[package]] 216 | name = "blocking" 217 | version = "1.3.1" 218 | source = "registry+https://github.com/rust-lang/crates.io-index" 219 | checksum = "77231a1c8f801696fc0123ec6150ce92cffb8e164a02afb9c8ddee0e9b65ad65" 220 | dependencies = [ 221 | "async-channel", 222 | "async-lock", 223 | "async-task", 224 | "atomic-waker", 225 | "fastrand", 226 | "futures-lite", 227 | "log", 228 | ] 229 | 230 | [[package]] 231 | name = "bumpalo" 232 | version = "3.12.0" 233 | source = "registry+https://github.com/rust-lang/crates.io-index" 234 | checksum = "0d261e256854913907f67ed06efbc3338dfe6179796deefc1ff763fc1aee5535" 235 | 236 | [[package]] 237 | name = "byteorder" 238 | version = "1.4.3" 239 | source = "registry+https://github.com/rust-lang/crates.io-index" 240 | checksum = "14c189c53d098945499cdfa7ecc63567cf3886b3332b312a5b4585d8d3a6a610" 241 | 242 | [[package]] 243 | name = "cc" 244 | version = "1.0.79" 245 | source = "registry+https://github.com/rust-lang/crates.io-index" 246 | checksum = "50d30906286121d95be3d479533b458f87493b30a4b5f79a607db8f5d11aa91f" 247 | 248 | [[package]] 249 | name = "cfg-if" 250 | version = "1.0.0" 251 | source = "registry+https://github.com/rust-lang/crates.io-index" 252 | checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" 253 | 254 | [[package]] 255 | name = "concurrent-queue" 256 | version = "2.2.0" 257 | source = "registry+https://github.com/rust-lang/crates.io-index" 258 | checksum = "62ec6771ecfa0762d24683ee5a32ad78487a3d3afdc0fb8cae19d2c5deb50b7c" 259 | dependencies = [ 260 | "crossbeam-utils", 261 | ] 262 | 263 | [[package]] 264 | name = "cpufeatures" 265 | version = "0.2.6" 266 | source = "registry+https://github.com/rust-lang/crates.io-index" 267 | checksum = "280a9f2d8b3a38871a3c8a46fb80db65e5e5ed97da80c4d08bf27fb63e35e181" 268 | dependencies = [ 269 | "libc", 270 | ] 271 | 272 | [[package]] 273 | name = "crossbeam-utils" 274 | version = "0.8.15" 275 | source = "registry+https://github.com/rust-lang/crates.io-index" 276 | checksum = "3c063cd8cc95f5c377ed0d4b49a4b21f632396ff690e8470c29b3359b346984b" 277 | dependencies = [ 278 | "cfg-if", 279 | ] 280 | 281 | [[package]] 282 | name = "crypto-common" 283 | version = "0.1.6" 284 | source = "registry+https://github.com/rust-lang/crates.io-index" 285 | checksum = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3" 286 | dependencies = [ 287 | "generic-array", 288 | "typenum", 289 | ] 290 | 291 | [[package]] 292 | name = "ctor" 293 | version = "0.1.26" 294 | source = "registry+https://github.com/rust-lang/crates.io-index" 295 | checksum = "6d2301688392eb071b0bf1a37be05c469d3cc4dbbd95df672fe28ab021e6a096" 296 | dependencies = [ 297 | "quote", 298 | "syn 1.0.109", 299 | ] 300 | 301 | [[package]] 302 | name = "derivative" 303 | version = "2.2.0" 304 | source = "registry+https://github.com/rust-lang/crates.io-index" 305 | checksum = "fcc3dd5e9e9c0b295d6e1e4d811fb6f157d5ffd784b8d202fc62eac8035a770b" 306 | dependencies = [ 307 | "proc-macro2", 308 | "quote", 309 | "syn 1.0.109", 310 | ] 311 | 312 | [[package]] 313 | name = "digest" 314 | version = "0.10.6" 315 | source = "registry+https://github.com/rust-lang/crates.io-index" 316 | checksum = "8168378f4e5023e7218c89c891c0fd8ecdb5e5e4f18cb78f38cf245dd021e76f" 317 | dependencies = [ 318 | "block-buffer", 319 | "crypto-common", 320 | ] 321 | 322 | [[package]] 323 | name = "dirs" 324 | version = "4.0.0" 325 | source = "registry+https://github.com/rust-lang/crates.io-index" 326 | checksum = "ca3aa72a6f96ea37bbc5aa912f6788242832f75369bdfdadcb0e38423f100059" 327 | dependencies = [ 328 | "dirs-sys", 329 | ] 330 | 331 | [[package]] 332 | name = "dirs-sys" 333 | version = "0.3.7" 334 | source = "registry+https://github.com/rust-lang/crates.io-index" 335 | checksum = "1b1d1d91c932ef41c0f2663aa8b0ca0342d444d842c06914aa0a7e352d0bada6" 336 | dependencies = [ 337 | "libc", 338 | "redox_users", 339 | "winapi", 340 | ] 341 | 342 | [[package]] 343 | name = "enumflags2" 344 | version = "0.7.6" 345 | source = "registry+https://github.com/rust-lang/crates.io-index" 346 | checksum = "0044ebdf7fbb2a772e0c0233a9d3173c5cd8af8ae7078d4c5188af44ffffaa4b" 347 | dependencies = [ 348 | "enumflags2_derive", 349 | "serde", 350 | ] 351 | 352 | [[package]] 353 | name = "enumflags2_derive" 354 | version = "0.7.6" 355 | source = "registry+https://github.com/rust-lang/crates.io-index" 356 | checksum = "9d2c772ccdbdfd1967b4f5d79d17c98ebf92009fdcc838db7aa434462f600c26" 357 | dependencies = [ 358 | "proc-macro2", 359 | "quote", 360 | "syn 2.0.13", 361 | ] 362 | 363 | [[package]] 364 | name = "errno" 365 | version = "0.3.1" 366 | source = "registry+https://github.com/rust-lang/crates.io-index" 367 | checksum = "4bcfec3a70f97c962c307b2d2c56e358cf1d00b558d74262b5f929ee8cc7e73a" 368 | dependencies = [ 369 | "errno-dragonfly", 370 | "libc", 371 | "windows-sys 0.48.0", 372 | ] 373 | 374 | [[package]] 375 | name = "errno-dragonfly" 376 | version = "0.1.2" 377 | source = "registry+https://github.com/rust-lang/crates.io-index" 378 | checksum = "aa68f1b12764fab894d2755d2518754e71b4fd80ecfb822714a1206c2aab39bf" 379 | dependencies = [ 380 | "cc", 381 | "libc", 382 | ] 383 | 384 | [[package]] 385 | name = "event-listener" 386 | version = "2.5.3" 387 | source = "registry+https://github.com/rust-lang/crates.io-index" 388 | checksum = "0206175f82b8d6bf6652ff7d71a1e27fd2e4efde587fd368662814d6ec1d9ce0" 389 | 390 | [[package]] 391 | name = "fastrand" 392 | version = "1.9.0" 393 | source = "registry+https://github.com/rust-lang/crates.io-index" 394 | checksum = "e51093e27b0797c359783294ca4f0a911c270184cb10f85783b118614a1501be" 395 | dependencies = [ 396 | "instant", 397 | ] 398 | 399 | [[package]] 400 | name = "form_urlencoded" 401 | version = "1.1.0" 402 | source = "registry+https://github.com/rust-lang/crates.io-index" 403 | checksum = "a9c384f161156f5260c24a097c56119f9be8c798586aecc13afbcbe7b7e26bf8" 404 | dependencies = [ 405 | "percent-encoding", 406 | ] 407 | 408 | [[package]] 409 | name = "futures-channel" 410 | version = "0.3.28" 411 | source = "registry+https://github.com/rust-lang/crates.io-index" 412 | checksum = "955518d47e09b25bbebc7a18df10b81f0c766eaf4c4f1cccef2fca5f2a4fb5f2" 413 | dependencies = [ 414 | "futures-core", 415 | ] 416 | 417 | [[package]] 418 | name = "futures-core" 419 | version = "0.3.28" 420 | source = "registry+https://github.com/rust-lang/crates.io-index" 421 | checksum = "4bca583b7e26f571124fe5b7561d49cb2868d79116cfa0eefce955557c6fee8c" 422 | 423 | [[package]] 424 | name = "futures-io" 425 | version = "0.3.28" 426 | source = "registry+https://github.com/rust-lang/crates.io-index" 427 | checksum = "4fff74096e71ed47f8e023204cfd0aa1289cd54ae5430a9523be060cdb849964" 428 | 429 | [[package]] 430 | name = "futures-lite" 431 | version = "1.13.0" 432 | source = "registry+https://github.com/rust-lang/crates.io-index" 433 | checksum = "49a9d51ce47660b1e808d3c990b4709f2f415d928835a17dfd16991515c46bce" 434 | dependencies = [ 435 | "fastrand", 436 | "futures-core", 437 | "futures-io", 438 | "memchr", 439 | "parking", 440 | "pin-project-lite", 441 | "waker-fn", 442 | ] 443 | 444 | [[package]] 445 | name = "futures-macro" 446 | version = "0.3.28" 447 | source = "registry+https://github.com/rust-lang/crates.io-index" 448 | checksum = "89ca545a94061b6365f2c7355b4b32bd20df3ff95f02da9329b34ccc3bd6ee72" 449 | dependencies = [ 450 | "proc-macro2", 451 | "quote", 452 | "syn 2.0.13", 453 | ] 454 | 455 | [[package]] 456 | name = "futures-sink" 457 | version = "0.3.28" 458 | source = "registry+https://github.com/rust-lang/crates.io-index" 459 | checksum = "f43be4fe21a13b9781a69afa4985b0f6ee0e1afab2c6f454a8cf30e2b2237b6e" 460 | 461 | [[package]] 462 | name = "futures-task" 463 | version = "0.3.28" 464 | source = "registry+https://github.com/rust-lang/crates.io-index" 465 | checksum = "76d3d132be6c0e6aa1534069c705a74a5997a356c0dc2f86a47765e5617c5b65" 466 | 467 | [[package]] 468 | name = "futures-util" 469 | version = "0.3.28" 470 | source = "registry+https://github.com/rust-lang/crates.io-index" 471 | checksum = "26b01e40b772d54cf6c6d721c1d1abd0647a0106a12ecaa1c186273392a69533" 472 | dependencies = [ 473 | "futures-core", 474 | "futures-io", 475 | "futures-macro", 476 | "futures-sink", 477 | "futures-task", 478 | "memchr", 479 | "pin-project-lite", 480 | "pin-utils", 481 | "slab", 482 | ] 483 | 484 | [[package]] 485 | name = "generic-array" 486 | version = "0.14.7" 487 | source = "registry+https://github.com/rust-lang/crates.io-index" 488 | checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a" 489 | dependencies = [ 490 | "typenum", 491 | "version_check", 492 | ] 493 | 494 | [[package]] 495 | name = "getrandom" 496 | version = "0.2.9" 497 | source = "registry+https://github.com/rust-lang/crates.io-index" 498 | checksum = "c85e1d9ab2eadba7e5040d4e09cbd6d072b76a557ad64e797c2cb9d4da21d7e4" 499 | dependencies = [ 500 | "cfg-if", 501 | "libc", 502 | "wasi", 503 | ] 504 | 505 | [[package]] 506 | name = "gloo-timers" 507 | version = "0.2.6" 508 | source = "registry+https://github.com/rust-lang/crates.io-index" 509 | checksum = "9b995a66bb87bebce9a0f4a95aed01daca4872c050bfcb21653361c03bc35e5c" 510 | dependencies = [ 511 | "futures-channel", 512 | "futures-core", 513 | "js-sys", 514 | "wasm-bindgen", 515 | ] 516 | 517 | [[package]] 518 | name = "hashbrown" 519 | version = "0.12.3" 520 | source = "registry+https://github.com/rust-lang/crates.io-index" 521 | checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" 522 | 523 | [[package]] 524 | name = "hermit-abi" 525 | version = "0.3.1" 526 | source = "registry+https://github.com/rust-lang/crates.io-index" 527 | checksum = "fed44880c466736ef9a5c5b5facefb5ed0785676d0c02d612db14e54f0d84286" 528 | 529 | [[package]] 530 | name = "hex" 531 | version = "0.4.3" 532 | source = "registry+https://github.com/rust-lang/crates.io-index" 533 | checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70" 534 | 535 | [[package]] 536 | name = "idna" 537 | version = "0.3.0" 538 | source = "registry+https://github.com/rust-lang/crates.io-index" 539 | checksum = "e14ddfc70884202db2244c223200c204c2bda1bc6e0998d11b5e024d657209e6" 540 | dependencies = [ 541 | "unicode-bidi", 542 | "unicode-normalization", 543 | ] 544 | 545 | [[package]] 546 | name = "indexmap" 547 | version = "1.9.3" 548 | source = "registry+https://github.com/rust-lang/crates.io-index" 549 | checksum = "bd070e393353796e801d209ad339e89596eb4c8d430d18ede6a1cced8fafbd99" 550 | dependencies = [ 551 | "autocfg", 552 | "hashbrown", 553 | ] 554 | 555 | [[package]] 556 | name = "instant" 557 | version = "0.1.12" 558 | source = "registry+https://github.com/rust-lang/crates.io-index" 559 | checksum = "7a5bbe824c507c5da5956355e86a746d82e0e1464f65d862cc5e71da70e94b2c" 560 | dependencies = [ 561 | "cfg-if", 562 | ] 563 | 564 | [[package]] 565 | name = "io-lifetimes" 566 | version = "1.0.10" 567 | source = "registry+https://github.com/rust-lang/crates.io-index" 568 | checksum = "9c66c74d2ae7e79a5a8f7ac924adbe38ee42a859c6539ad869eb51f0b52dc220" 569 | dependencies = [ 570 | "hermit-abi", 571 | "libc", 572 | "windows-sys 0.48.0", 573 | ] 574 | 575 | [[package]] 576 | name = "js-sys" 577 | version = "0.3.61" 578 | source = "registry+https://github.com/rust-lang/crates.io-index" 579 | checksum = "445dde2150c55e483f3d8416706b97ec8e8237c307e5b7b4b8dd15e6af2a0730" 580 | dependencies = [ 581 | "wasm-bindgen", 582 | ] 583 | 584 | [[package]] 585 | name = "kv-log-macro" 586 | version = "1.0.7" 587 | source = "registry+https://github.com/rust-lang/crates.io-index" 588 | checksum = "0de8b303297635ad57c9f5059fd9cee7a47f8e8daa09df0fcd07dd39fb22977f" 589 | dependencies = [ 590 | "log", 591 | ] 592 | 593 | [[package]] 594 | name = "libc" 595 | version = "0.2.141" 596 | source = "registry+https://github.com/rust-lang/crates.io-index" 597 | checksum = "3304a64d199bb964be99741b7a14d26972741915b3649639149b2479bb46f4b5" 598 | 599 | [[package]] 600 | name = "linux-raw-sys" 601 | version = "0.3.1" 602 | source = "registry+https://github.com/rust-lang/crates.io-index" 603 | checksum = "d59d8c75012853d2e872fb56bc8a2e53718e2cafe1a4c823143141c6d90c322f" 604 | 605 | [[package]] 606 | name = "log" 607 | version = "0.4.17" 608 | source = "registry+https://github.com/rust-lang/crates.io-index" 609 | checksum = "abb12e687cfb44aa40f41fc3978ef76448f9b6038cad6aef4259d3c095a2382e" 610 | dependencies = [ 611 | "cfg-if", 612 | "value-bag", 613 | ] 614 | 615 | [[package]] 616 | name = "memchr" 617 | version = "2.5.0" 618 | source = "registry+https://github.com/rust-lang/crates.io-index" 619 | checksum = "2dffe52ecf27772e601905b7522cb4ef790d2cc203488bbd0e2fe85fcb74566d" 620 | 621 | [[package]] 622 | name = "memoffset" 623 | version = "0.7.1" 624 | source = "registry+https://github.com/rust-lang/crates.io-index" 625 | checksum = "5de893c32cde5f383baa4c04c5d6dbdd735cfd4a794b0debdb2bb1b421da5ff4" 626 | dependencies = [ 627 | "autocfg", 628 | ] 629 | 630 | [[package]] 631 | name = "nix" 632 | version = "0.26.2" 633 | source = "registry+https://github.com/rust-lang/crates.io-index" 634 | checksum = "bfdda3d196821d6af13126e40375cdf7da646a96114af134d5f417a9a1dc8e1a" 635 | dependencies = [ 636 | "bitflags", 637 | "cfg-if", 638 | "libc", 639 | "memoffset", 640 | "pin-utils", 641 | "static_assertions", 642 | ] 643 | 644 | [[package]] 645 | name = "once_cell" 646 | version = "1.17.1" 647 | source = "registry+https://github.com/rust-lang/crates.io-index" 648 | checksum = "b7e5500299e16ebb147ae15a00a942af264cf3688f47923b8fc2cd5858f23ad3" 649 | 650 | [[package]] 651 | name = "ordered-stream" 652 | version = "0.2.0" 653 | source = "registry+https://github.com/rust-lang/crates.io-index" 654 | checksum = "9aa2b01e1d916879f73a53d01d1d6cee68adbb31d6d9177a8cfce093cced1d50" 655 | dependencies = [ 656 | "futures-core", 657 | "pin-project-lite", 658 | ] 659 | 660 | [[package]] 661 | name = "parking" 662 | version = "2.1.0" 663 | source = "registry+https://github.com/rust-lang/crates.io-index" 664 | checksum = "14f2252c834a40ed9bb5422029649578e63aa341ac401f74e719dd1afda8394e" 665 | 666 | [[package]] 667 | name = "percent-encoding" 668 | version = "2.2.0" 669 | source = "registry+https://github.com/rust-lang/crates.io-index" 670 | checksum = "478c572c3d73181ff3c2539045f6eb99e5491218eae919370993b890cdbdd98e" 671 | 672 | [[package]] 673 | name = "pin-project-lite" 674 | version = "0.2.9" 675 | source = "registry+https://github.com/rust-lang/crates.io-index" 676 | checksum = "e0a7ae3ac2f1173085d398531c705756c94a4c56843785df85a60c1a0afac116" 677 | 678 | [[package]] 679 | name = "pin-utils" 680 | version = "0.1.0" 681 | source = "registry+https://github.com/rust-lang/crates.io-index" 682 | checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" 683 | 684 | [[package]] 685 | name = "polling" 686 | version = "2.7.0" 687 | source = "registry+https://github.com/rust-lang/crates.io-index" 688 | checksum = "4be1c66a6add46bff50935c313dae30a5030cf8385c5206e8a95e9e9def974aa" 689 | dependencies = [ 690 | "autocfg", 691 | "bitflags", 692 | "cfg-if", 693 | "concurrent-queue", 694 | "libc", 695 | "log", 696 | "pin-project-lite", 697 | "windows-sys 0.48.0", 698 | ] 699 | 700 | [[package]] 701 | name = "ppv-lite86" 702 | version = "0.2.17" 703 | source = "registry+https://github.com/rust-lang/crates.io-index" 704 | checksum = "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de" 705 | 706 | [[package]] 707 | name = "proc-macro-crate" 708 | version = "1.3.1" 709 | source = "registry+https://github.com/rust-lang/crates.io-index" 710 | checksum = "7f4c021e1093a56626774e81216a4ce732a735e5bad4868a03f3ed65ca0c3919" 711 | dependencies = [ 712 | "once_cell", 713 | "toml_edit", 714 | ] 715 | 716 | [[package]] 717 | name = "proc-macro2" 718 | version = "1.0.56" 719 | source = "registry+https://github.com/rust-lang/crates.io-index" 720 | checksum = "2b63bdb0cd06f1f4dedf69b254734f9b45af66e4a031e42a7480257d9898b435" 721 | dependencies = [ 722 | "unicode-ident", 723 | ] 724 | 725 | [[package]] 726 | name = "quote" 727 | version = "1.0.26" 728 | source = "registry+https://github.com/rust-lang/crates.io-index" 729 | checksum = "4424af4bf778aae2051a77b60283332f386554255d722233d09fbfc7e30da2fc" 730 | dependencies = [ 731 | "proc-macro2", 732 | ] 733 | 734 | [[package]] 735 | name = "rand" 736 | version = "0.8.5" 737 | source = "registry+https://github.com/rust-lang/crates.io-index" 738 | checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" 739 | dependencies = [ 740 | "libc", 741 | "rand_chacha", 742 | "rand_core", 743 | ] 744 | 745 | [[package]] 746 | name = "rand_chacha" 747 | version = "0.3.1" 748 | source = "registry+https://github.com/rust-lang/crates.io-index" 749 | checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" 750 | dependencies = [ 751 | "ppv-lite86", 752 | "rand_core", 753 | ] 754 | 755 | [[package]] 756 | name = "rand_core" 757 | version = "0.6.4" 758 | source = "registry+https://github.com/rust-lang/crates.io-index" 759 | checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" 760 | dependencies = [ 761 | "getrandom", 762 | ] 763 | 764 | [[package]] 765 | name = "redox_syscall" 766 | version = "0.2.16" 767 | source = "registry+https://github.com/rust-lang/crates.io-index" 768 | checksum = "fb5a58c1855b4b6819d59012155603f0b22ad30cad752600aadfcb695265519a" 769 | dependencies = [ 770 | "bitflags", 771 | ] 772 | 773 | [[package]] 774 | name = "redox_syscall" 775 | version = "0.3.5" 776 | source = "registry+https://github.com/rust-lang/crates.io-index" 777 | checksum = "567664f262709473930a4bf9e51bf2ebf3348f2e748ccc50dea20646858f8f29" 778 | dependencies = [ 779 | "bitflags", 780 | ] 781 | 782 | [[package]] 783 | name = "redox_users" 784 | version = "0.4.3" 785 | source = "registry+https://github.com/rust-lang/crates.io-index" 786 | checksum = "b033d837a7cf162d7993aded9304e30a83213c648b6e389db233191f891e5c2b" 787 | dependencies = [ 788 | "getrandom", 789 | "redox_syscall 0.2.16", 790 | "thiserror", 791 | ] 792 | 793 | [[package]] 794 | name = "regex" 795 | version = "1.7.3" 796 | source = "registry+https://github.com/rust-lang/crates.io-index" 797 | checksum = "8b1f693b24f6ac912f4893ef08244d70b6067480d2f1a46e950c9691e6749d1d" 798 | dependencies = [ 799 | "aho-corasick", 800 | "memchr", 801 | "regex-syntax", 802 | ] 803 | 804 | [[package]] 805 | name = "regex-syntax" 806 | version = "0.6.29" 807 | source = "registry+https://github.com/rust-lang/crates.io-index" 808 | checksum = "f162c6dd7b008981e4d40210aca20b4bd0f9b60ca9271061b07f78537722f2e1" 809 | 810 | [[package]] 811 | name = "rustix" 812 | version = "0.37.11" 813 | source = "registry+https://github.com/rust-lang/crates.io-index" 814 | checksum = "85597d61f83914ddeba6a47b3b8ffe7365107221c2e557ed94426489fefb5f77" 815 | dependencies = [ 816 | "bitflags", 817 | "errno", 818 | "io-lifetimes", 819 | "libc", 820 | "linux-raw-sys", 821 | "windows-sys 0.48.0", 822 | ] 823 | 824 | [[package]] 825 | name = "serde" 826 | version = "1.0.159" 827 | source = "registry+https://github.com/rust-lang/crates.io-index" 828 | checksum = "3c04e8343c3daeec41f58990b9d77068df31209f2af111e059e9fe9646693065" 829 | dependencies = [ 830 | "serde_derive", 831 | ] 832 | 833 | [[package]] 834 | name = "serde_derive" 835 | version = "1.0.159" 836 | source = "registry+https://github.com/rust-lang/crates.io-index" 837 | checksum = "4c614d17805b093df4b147b51339e7e44bf05ef59fba1e45d83500bcfb4d8585" 838 | dependencies = [ 839 | "proc-macro2", 840 | "quote", 841 | "syn 2.0.13", 842 | ] 843 | 844 | [[package]] 845 | name = "serde_repr" 846 | version = "0.1.12" 847 | source = "registry+https://github.com/rust-lang/crates.io-index" 848 | checksum = "bcec881020c684085e55a25f7fd888954d56609ef363479dc5a1305eb0d40cab" 849 | dependencies = [ 850 | "proc-macro2", 851 | "quote", 852 | "syn 2.0.13", 853 | ] 854 | 855 | [[package]] 856 | name = "sha1" 857 | version = "0.10.5" 858 | source = "registry+https://github.com/rust-lang/crates.io-index" 859 | checksum = "f04293dc80c3993519f2d7f6f511707ee7094fe0c6d3406feb330cdb3540eba3" 860 | dependencies = [ 861 | "cfg-if", 862 | "cpufeatures", 863 | "digest", 864 | ] 865 | 866 | [[package]] 867 | name = "shanatest" 868 | version = "0.1.0" 869 | dependencies = [ 870 | "ashpd", 871 | "async-std", 872 | ] 873 | 874 | [[package]] 875 | name = "slab" 876 | version = "0.4.8" 877 | source = "registry+https://github.com/rust-lang/crates.io-index" 878 | checksum = "6528351c9bc8ab22353f9d776db39a20288e8d6c37ef8cfe3317cf875eecfc2d" 879 | dependencies = [ 880 | "autocfg", 881 | ] 882 | 883 | [[package]] 884 | name = "socket2" 885 | version = "0.4.9" 886 | source = "registry+https://github.com/rust-lang/crates.io-index" 887 | checksum = "64a4a911eed85daf18834cfaa86a79b7d266ff93ff5ba14005426219480ed662" 888 | dependencies = [ 889 | "libc", 890 | "winapi", 891 | ] 892 | 893 | [[package]] 894 | name = "static_assertions" 895 | version = "1.1.0" 896 | source = "registry+https://github.com/rust-lang/crates.io-index" 897 | checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f" 898 | 899 | [[package]] 900 | name = "syn" 901 | version = "1.0.109" 902 | source = "registry+https://github.com/rust-lang/crates.io-index" 903 | checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237" 904 | dependencies = [ 905 | "proc-macro2", 906 | "quote", 907 | "unicode-ident", 908 | ] 909 | 910 | [[package]] 911 | name = "syn" 912 | version = "2.0.13" 913 | source = "registry+https://github.com/rust-lang/crates.io-index" 914 | checksum = "4c9da457c5285ac1f936ebd076af6dac17a61cfe7826f2076b4d015cf47bc8ec" 915 | dependencies = [ 916 | "proc-macro2", 917 | "quote", 918 | "unicode-ident", 919 | ] 920 | 921 | [[package]] 922 | name = "tempfile" 923 | version = "3.5.0" 924 | source = "registry+https://github.com/rust-lang/crates.io-index" 925 | checksum = "b9fbec84f381d5795b08656e4912bec604d162bff9291d6189a78f4c8ab87998" 926 | dependencies = [ 927 | "cfg-if", 928 | "fastrand", 929 | "redox_syscall 0.3.5", 930 | "rustix", 931 | "windows-sys 0.45.0", 932 | ] 933 | 934 | [[package]] 935 | name = "thiserror" 936 | version = "1.0.40" 937 | source = "registry+https://github.com/rust-lang/crates.io-index" 938 | checksum = "978c9a314bd8dc99be594bc3c175faaa9794be04a5a5e153caba6915336cebac" 939 | dependencies = [ 940 | "thiserror-impl", 941 | ] 942 | 943 | [[package]] 944 | name = "thiserror-impl" 945 | version = "1.0.40" 946 | source = "registry+https://github.com/rust-lang/crates.io-index" 947 | checksum = "f9456a42c5b0d803c8cd86e73dd7cc9edd429499f37a3550d286d5e86720569f" 948 | dependencies = [ 949 | "proc-macro2", 950 | "quote", 951 | "syn 2.0.13", 952 | ] 953 | 954 | [[package]] 955 | name = "tinyvec" 956 | version = "1.6.0" 957 | source = "registry+https://github.com/rust-lang/crates.io-index" 958 | checksum = "87cc5ceb3875bb20c2890005a4e226a4651264a5c75edb2421b52861a0a0cb50" 959 | dependencies = [ 960 | "tinyvec_macros", 961 | ] 962 | 963 | [[package]] 964 | name = "tinyvec_macros" 965 | version = "0.1.1" 966 | source = "registry+https://github.com/rust-lang/crates.io-index" 967 | checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" 968 | 969 | [[package]] 970 | name = "toml_datetime" 971 | version = "0.6.1" 972 | source = "registry+https://github.com/rust-lang/crates.io-index" 973 | checksum = "3ab8ed2edee10b50132aed5f331333428b011c99402b5a534154ed15746f9622" 974 | 975 | [[package]] 976 | name = "toml_edit" 977 | version = "0.19.8" 978 | source = "registry+https://github.com/rust-lang/crates.io-index" 979 | checksum = "239410c8609e8125456927e6707163a3b1fdb40561e4b803bc041f466ccfdc13" 980 | dependencies = [ 981 | "indexmap", 982 | "toml_datetime", 983 | "winnow", 984 | ] 985 | 986 | [[package]] 987 | name = "tracing" 988 | version = "0.1.37" 989 | source = "registry+https://github.com/rust-lang/crates.io-index" 990 | checksum = "8ce8c33a8d48bd45d624a6e523445fd21ec13d3653cd51f681abf67418f54eb8" 991 | dependencies = [ 992 | "cfg-if", 993 | "pin-project-lite", 994 | "tracing-attributes", 995 | "tracing-core", 996 | ] 997 | 998 | [[package]] 999 | name = "tracing-attributes" 1000 | version = "0.1.23" 1001 | source = "registry+https://github.com/rust-lang/crates.io-index" 1002 | checksum = "4017f8f45139870ca7e672686113917c71c7a6e02d4924eda67186083c03081a" 1003 | dependencies = [ 1004 | "proc-macro2", 1005 | "quote", 1006 | "syn 1.0.109", 1007 | ] 1008 | 1009 | [[package]] 1010 | name = "tracing-core" 1011 | version = "0.1.30" 1012 | source = "registry+https://github.com/rust-lang/crates.io-index" 1013 | checksum = "24eb03ba0eab1fd845050058ce5e616558e8f8d8fca633e6b163fe25c797213a" 1014 | dependencies = [ 1015 | "once_cell", 1016 | ] 1017 | 1018 | [[package]] 1019 | name = "typenum" 1020 | version = "1.16.0" 1021 | source = "registry+https://github.com/rust-lang/crates.io-index" 1022 | checksum = "497961ef93d974e23eb6f433eb5fe1b7930b659f06d12dec6fc44a8f554c0bba" 1023 | 1024 | [[package]] 1025 | name = "uds_windows" 1026 | version = "1.0.2" 1027 | source = "registry+https://github.com/rust-lang/crates.io-index" 1028 | checksum = "ce65604324d3cce9b966701489fbd0cf318cb1f7bd9dd07ac9a4ee6fb791930d" 1029 | dependencies = [ 1030 | "tempfile", 1031 | "winapi", 1032 | ] 1033 | 1034 | [[package]] 1035 | name = "unicode-bidi" 1036 | version = "0.3.13" 1037 | source = "registry+https://github.com/rust-lang/crates.io-index" 1038 | checksum = "92888ba5573ff080736b3648696b70cafad7d250551175acbaa4e0385b3e1460" 1039 | 1040 | [[package]] 1041 | name = "unicode-ident" 1042 | version = "1.0.8" 1043 | source = "registry+https://github.com/rust-lang/crates.io-index" 1044 | checksum = "e5464a87b239f13a63a501f2701565754bae92d243d4bb7eb12f6d57d2269bf4" 1045 | 1046 | [[package]] 1047 | name = "unicode-normalization" 1048 | version = "0.1.22" 1049 | source = "registry+https://github.com/rust-lang/crates.io-index" 1050 | checksum = "5c5713f0fc4b5db668a2ac63cdb7bb4469d8c9fed047b1d0292cc7b0ce2ba921" 1051 | dependencies = [ 1052 | "tinyvec", 1053 | ] 1054 | 1055 | [[package]] 1056 | name = "url" 1057 | version = "2.3.1" 1058 | source = "registry+https://github.com/rust-lang/crates.io-index" 1059 | checksum = "0d68c799ae75762b8c3fe375feb6600ef5602c883c5d21eb51c09f22b83c4643" 1060 | dependencies = [ 1061 | "form_urlencoded", 1062 | "idna", 1063 | "percent-encoding", 1064 | "serde", 1065 | ] 1066 | 1067 | [[package]] 1068 | name = "value-bag" 1069 | version = "1.0.0-alpha.9" 1070 | source = "registry+https://github.com/rust-lang/crates.io-index" 1071 | checksum = "2209b78d1249f7e6f3293657c9779fe31ced465df091bbd433a1cf88e916ec55" 1072 | dependencies = [ 1073 | "ctor", 1074 | "version_check", 1075 | ] 1076 | 1077 | [[package]] 1078 | name = "version_check" 1079 | version = "0.9.4" 1080 | source = "registry+https://github.com/rust-lang/crates.io-index" 1081 | checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f" 1082 | 1083 | [[package]] 1084 | name = "waker-fn" 1085 | version = "1.1.0" 1086 | source = "registry+https://github.com/rust-lang/crates.io-index" 1087 | checksum = "9d5b2c62b4012a3e1eca5a7e077d13b3bf498c4073e33ccd58626607748ceeca" 1088 | 1089 | [[package]] 1090 | name = "wasi" 1091 | version = "0.11.0+wasi-snapshot-preview1" 1092 | source = "registry+https://github.com/rust-lang/crates.io-index" 1093 | checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" 1094 | 1095 | [[package]] 1096 | name = "wasm-bindgen" 1097 | version = "0.2.84" 1098 | source = "registry+https://github.com/rust-lang/crates.io-index" 1099 | checksum = "31f8dcbc21f30d9b8f2ea926ecb58f6b91192c17e9d33594b3df58b2007ca53b" 1100 | dependencies = [ 1101 | "cfg-if", 1102 | "wasm-bindgen-macro", 1103 | ] 1104 | 1105 | [[package]] 1106 | name = "wasm-bindgen-backend" 1107 | version = "0.2.84" 1108 | source = "registry+https://github.com/rust-lang/crates.io-index" 1109 | checksum = "95ce90fd5bcc06af55a641a86428ee4229e44e07033963a2290a8e241607ccb9" 1110 | dependencies = [ 1111 | "bumpalo", 1112 | "log", 1113 | "once_cell", 1114 | "proc-macro2", 1115 | "quote", 1116 | "syn 1.0.109", 1117 | "wasm-bindgen-shared", 1118 | ] 1119 | 1120 | [[package]] 1121 | name = "wasm-bindgen-futures" 1122 | version = "0.4.34" 1123 | source = "registry+https://github.com/rust-lang/crates.io-index" 1124 | checksum = "f219e0d211ba40266969f6dbdd90636da12f75bee4fc9d6c23d1260dadb51454" 1125 | dependencies = [ 1126 | "cfg-if", 1127 | "js-sys", 1128 | "wasm-bindgen", 1129 | "web-sys", 1130 | ] 1131 | 1132 | [[package]] 1133 | name = "wasm-bindgen-macro" 1134 | version = "0.2.84" 1135 | source = "registry+https://github.com/rust-lang/crates.io-index" 1136 | checksum = "4c21f77c0bedc37fd5dc21f897894a5ca01e7bb159884559461862ae90c0b4c5" 1137 | dependencies = [ 1138 | "quote", 1139 | "wasm-bindgen-macro-support", 1140 | ] 1141 | 1142 | [[package]] 1143 | name = "wasm-bindgen-macro-support" 1144 | version = "0.2.84" 1145 | source = "registry+https://github.com/rust-lang/crates.io-index" 1146 | checksum = "2aff81306fcac3c7515ad4e177f521b5c9a15f2b08f4e32d823066102f35a5f6" 1147 | dependencies = [ 1148 | "proc-macro2", 1149 | "quote", 1150 | "syn 1.0.109", 1151 | "wasm-bindgen-backend", 1152 | "wasm-bindgen-shared", 1153 | ] 1154 | 1155 | [[package]] 1156 | name = "wasm-bindgen-shared" 1157 | version = "0.2.84" 1158 | source = "registry+https://github.com/rust-lang/crates.io-index" 1159 | checksum = "0046fef7e28c3804e5e38bfa31ea2a0f73905319b677e57ebe37e49358989b5d" 1160 | 1161 | [[package]] 1162 | name = "web-sys" 1163 | version = "0.3.61" 1164 | source = "registry+https://github.com/rust-lang/crates.io-index" 1165 | checksum = "e33b99f4b23ba3eec1a53ac264e35a755f00e966e0065077d6027c0f575b0b97" 1166 | dependencies = [ 1167 | "js-sys", 1168 | "wasm-bindgen", 1169 | ] 1170 | 1171 | [[package]] 1172 | name = "winapi" 1173 | version = "0.3.9" 1174 | source = "registry+https://github.com/rust-lang/crates.io-index" 1175 | checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419" 1176 | dependencies = [ 1177 | "winapi-i686-pc-windows-gnu", 1178 | "winapi-x86_64-pc-windows-gnu", 1179 | ] 1180 | 1181 | [[package]] 1182 | name = "winapi-i686-pc-windows-gnu" 1183 | version = "0.4.0" 1184 | source = "registry+https://github.com/rust-lang/crates.io-index" 1185 | checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" 1186 | 1187 | [[package]] 1188 | name = "winapi-x86_64-pc-windows-gnu" 1189 | version = "0.4.0" 1190 | source = "registry+https://github.com/rust-lang/crates.io-index" 1191 | checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" 1192 | 1193 | [[package]] 1194 | name = "windows-sys" 1195 | version = "0.45.0" 1196 | source = "registry+https://github.com/rust-lang/crates.io-index" 1197 | checksum = "75283be5efb2831d37ea142365f009c02ec203cd29a3ebecbc093d52315b66d0" 1198 | dependencies = [ 1199 | "windows-targets 0.42.2", 1200 | ] 1201 | 1202 | [[package]] 1203 | name = "windows-sys" 1204 | version = "0.48.0" 1205 | source = "registry+https://github.com/rust-lang/crates.io-index" 1206 | checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9" 1207 | dependencies = [ 1208 | "windows-targets 0.48.0", 1209 | ] 1210 | 1211 | [[package]] 1212 | name = "windows-targets" 1213 | version = "0.42.2" 1214 | source = "registry+https://github.com/rust-lang/crates.io-index" 1215 | checksum = "8e5180c00cd44c9b1c88adb3693291f1cd93605ded80c250a75d472756b4d071" 1216 | dependencies = [ 1217 | "windows_aarch64_gnullvm 0.42.2", 1218 | "windows_aarch64_msvc 0.42.2", 1219 | "windows_i686_gnu 0.42.2", 1220 | "windows_i686_msvc 0.42.2", 1221 | "windows_x86_64_gnu 0.42.2", 1222 | "windows_x86_64_gnullvm 0.42.2", 1223 | "windows_x86_64_msvc 0.42.2", 1224 | ] 1225 | 1226 | [[package]] 1227 | name = "windows-targets" 1228 | version = "0.48.0" 1229 | source = "registry+https://github.com/rust-lang/crates.io-index" 1230 | checksum = "7b1eb6f0cd7c80c79759c929114ef071b87354ce476d9d94271031c0497adfd5" 1231 | dependencies = [ 1232 | "windows_aarch64_gnullvm 0.48.0", 1233 | "windows_aarch64_msvc 0.48.0", 1234 | "windows_i686_gnu 0.48.0", 1235 | "windows_i686_msvc 0.48.0", 1236 | "windows_x86_64_gnu 0.48.0", 1237 | "windows_x86_64_gnullvm 0.48.0", 1238 | "windows_x86_64_msvc 0.48.0", 1239 | ] 1240 | 1241 | [[package]] 1242 | name = "windows_aarch64_gnullvm" 1243 | version = "0.42.2" 1244 | source = "registry+https://github.com/rust-lang/crates.io-index" 1245 | checksum = "597a5118570b68bc08d8d59125332c54f1ba9d9adeedeef5b99b02ba2b0698f8" 1246 | 1247 | [[package]] 1248 | name = "windows_aarch64_gnullvm" 1249 | version = "0.48.0" 1250 | source = "registry+https://github.com/rust-lang/crates.io-index" 1251 | checksum = "91ae572e1b79dba883e0d315474df7305d12f569b400fcf90581b06062f7e1bc" 1252 | 1253 | [[package]] 1254 | name = "windows_aarch64_msvc" 1255 | version = "0.42.2" 1256 | source = "registry+https://github.com/rust-lang/crates.io-index" 1257 | checksum = "e08e8864a60f06ef0d0ff4ba04124db8b0fb3be5776a5cd47641e942e58c4d43" 1258 | 1259 | [[package]] 1260 | name = "windows_aarch64_msvc" 1261 | version = "0.48.0" 1262 | source = "registry+https://github.com/rust-lang/crates.io-index" 1263 | checksum = "b2ef27e0d7bdfcfc7b868b317c1d32c641a6fe4629c171b8928c7b08d98d7cf3" 1264 | 1265 | [[package]] 1266 | name = "windows_i686_gnu" 1267 | version = "0.42.2" 1268 | source = "registry+https://github.com/rust-lang/crates.io-index" 1269 | checksum = "c61d927d8da41da96a81f029489353e68739737d3beca43145c8afec9a31a84f" 1270 | 1271 | [[package]] 1272 | name = "windows_i686_gnu" 1273 | version = "0.48.0" 1274 | source = "registry+https://github.com/rust-lang/crates.io-index" 1275 | checksum = "622a1962a7db830d6fd0a69683c80a18fda201879f0f447f065a3b7467daa241" 1276 | 1277 | [[package]] 1278 | name = "windows_i686_msvc" 1279 | version = "0.42.2" 1280 | source = "registry+https://github.com/rust-lang/crates.io-index" 1281 | checksum = "44d840b6ec649f480a41c8d80f9c65108b92d89345dd94027bfe06ac444d1060" 1282 | 1283 | [[package]] 1284 | name = "windows_i686_msvc" 1285 | version = "0.48.0" 1286 | source = "registry+https://github.com/rust-lang/crates.io-index" 1287 | checksum = "4542c6e364ce21bf45d69fdd2a8e455fa38d316158cfd43b3ac1c5b1b19f8e00" 1288 | 1289 | [[package]] 1290 | name = "windows_x86_64_gnu" 1291 | version = "0.42.2" 1292 | source = "registry+https://github.com/rust-lang/crates.io-index" 1293 | checksum = "8de912b8b8feb55c064867cf047dda097f92d51efad5b491dfb98f6bbb70cb36" 1294 | 1295 | [[package]] 1296 | name = "windows_x86_64_gnu" 1297 | version = "0.48.0" 1298 | source = "registry+https://github.com/rust-lang/crates.io-index" 1299 | checksum = "ca2b8a661f7628cbd23440e50b05d705db3686f894fc9580820623656af974b1" 1300 | 1301 | [[package]] 1302 | name = "windows_x86_64_gnullvm" 1303 | version = "0.42.2" 1304 | source = "registry+https://github.com/rust-lang/crates.io-index" 1305 | checksum = "26d41b46a36d453748aedef1486d5c7a85db22e56aff34643984ea85514e94a3" 1306 | 1307 | [[package]] 1308 | name = "windows_x86_64_gnullvm" 1309 | version = "0.48.0" 1310 | source = "registry+https://github.com/rust-lang/crates.io-index" 1311 | checksum = "7896dbc1f41e08872e9d5e8f8baa8fdd2677f29468c4e156210174edc7f7b953" 1312 | 1313 | [[package]] 1314 | name = "windows_x86_64_msvc" 1315 | version = "0.42.2" 1316 | source = "registry+https://github.com/rust-lang/crates.io-index" 1317 | checksum = "9aec5da331524158c6d1a4ac0ab1541149c0b9505fde06423b02f5ef0106b9f0" 1318 | 1319 | [[package]] 1320 | name = "windows_x86_64_msvc" 1321 | version = "0.48.0" 1322 | source = "registry+https://github.com/rust-lang/crates.io-index" 1323 | checksum = "1a515f5799fe4961cb532f983ce2b23082366b898e52ffbce459c86f67c8378a" 1324 | 1325 | [[package]] 1326 | name = "winnow" 1327 | version = "0.4.1" 1328 | source = "registry+https://github.com/rust-lang/crates.io-index" 1329 | checksum = "ae8970b36c66498d8ff1d66685dc86b91b29db0c7739899012f63a63814b4b28" 1330 | dependencies = [ 1331 | "memchr", 1332 | ] 1333 | 1334 | [[package]] 1335 | name = "zbus" 1336 | version = "3.11.1" 1337 | source = "registry+https://github.com/rust-lang/crates.io-index" 1338 | checksum = "3dc29e76f558b2cb94190e8605ecfe77dd40f5df8c072951714b4b71a97f5848" 1339 | dependencies = [ 1340 | "async-broadcast", 1341 | "async-executor", 1342 | "async-fs", 1343 | "async-io", 1344 | "async-lock", 1345 | "async-recursion", 1346 | "async-task", 1347 | "async-trait", 1348 | "byteorder", 1349 | "derivative", 1350 | "dirs", 1351 | "enumflags2", 1352 | "event-listener", 1353 | "futures-core", 1354 | "futures-sink", 1355 | "futures-util", 1356 | "hex", 1357 | "nix", 1358 | "once_cell", 1359 | "ordered-stream", 1360 | "rand", 1361 | "serde", 1362 | "serde_repr", 1363 | "sha1", 1364 | "static_assertions", 1365 | "tracing", 1366 | "uds_windows", 1367 | "winapi", 1368 | "zbus_macros", 1369 | "zbus_names", 1370 | "zvariant", 1371 | ] 1372 | 1373 | [[package]] 1374 | name = "zbus_macros" 1375 | version = "3.11.1" 1376 | source = "registry+https://github.com/rust-lang/crates.io-index" 1377 | checksum = "62a80fd82c011cd08459eaaf1fd83d3090c1b61e6d5284360074a7475af3a85d" 1378 | dependencies = [ 1379 | "proc-macro-crate", 1380 | "proc-macro2", 1381 | "quote", 1382 | "regex", 1383 | "syn 1.0.109", 1384 | "zvariant_utils", 1385 | ] 1386 | 1387 | [[package]] 1388 | name = "zbus_names" 1389 | version = "2.5.0" 1390 | source = "registry+https://github.com/rust-lang/crates.io-index" 1391 | checksum = "f34f314916bd89bdb9934154627fab152f4f28acdda03e7c4c68181b214fe7e3" 1392 | dependencies = [ 1393 | "serde", 1394 | "static_assertions", 1395 | "zvariant", 1396 | ] 1397 | 1398 | [[package]] 1399 | name = "zvariant" 1400 | version = "3.12.0" 1401 | source = "registry+https://github.com/rust-lang/crates.io-index" 1402 | checksum = "46fe4914a985446d6fd287019b5fceccce38303d71407d9e6e711d44954a05d8" 1403 | dependencies = [ 1404 | "byteorder", 1405 | "enumflags2", 1406 | "libc", 1407 | "serde", 1408 | "static_assertions", 1409 | "url", 1410 | "zvariant_derive", 1411 | ] 1412 | 1413 | [[package]] 1414 | name = "zvariant_derive" 1415 | version = "3.12.0" 1416 | source = "registry+https://github.com/rust-lang/crates.io-index" 1417 | checksum = "34c20260af4b28b3275d6676c7e2a6be0d4332e8e0aba4616d34007fd84e462a" 1418 | dependencies = [ 1419 | "proc-macro-crate", 1420 | "proc-macro2", 1421 | "quote", 1422 | "syn 1.0.109", 1423 | "zvariant_utils", 1424 | ] 1425 | 1426 | [[package]] 1427 | name = "zvariant_utils" 1428 | version = "1.0.0" 1429 | source = "registry+https://github.com/rust-lang/crates.io-index" 1430 | checksum = "53b22993dbc4d128a17a3b6c92f1c63872dd67198537ee728d8b5d7c40640a8b" 1431 | dependencies = [ 1432 | "proc-macro2", 1433 | "quote", 1434 | "syn 1.0.109", 1435 | ] 1436 | -------------------------------------------------------------------------------- /Cargo.lock: -------------------------------------------------------------------------------- 1 | # This file is automatically @generated by Cargo. 2 | # It is not intended for manual editing. 3 | version = 4 4 | 5 | [[package]] 6 | name = "async-broadcast" 7 | version = "0.7.2" 8 | source = "registry+https://github.com/rust-lang/crates.io-index" 9 | checksum = "435a87a52755b8f27fcf321ac4f04b2802e337c8c4872923137471ec39c37532" 10 | dependencies = [ 11 | "event-listener", 12 | "event-listener-strategy", 13 | "futures-core", 14 | "pin-project-lite", 15 | ] 16 | 17 | [[package]] 18 | name = "async-recursion" 19 | version = "1.1.1" 20 | source = "registry+https://github.com/rust-lang/crates.io-index" 21 | checksum = "3b43422f69d8ff38f95f1b2bb76517c91589a924d1559a0e935d7c8ce0274c11" 22 | dependencies = [ 23 | "proc-macro2", 24 | "quote", 25 | "syn", 26 | ] 27 | 28 | [[package]] 29 | name = "async-trait" 30 | version = "0.1.89" 31 | source = "registry+https://github.com/rust-lang/crates.io-index" 32 | checksum = "9035ad2d096bed7955a320ee7e2230574d28fd3c3a0f186cbea1ff3c7eed5dbb" 33 | dependencies = [ 34 | "proc-macro2", 35 | "quote", 36 | "syn", 37 | ] 38 | 39 | [[package]] 40 | name = "autocfg" 41 | version = "1.5.0" 42 | source = "registry+https://github.com/rust-lang/crates.io-index" 43 | checksum = "c08606f8c3cbf4ce6ec8e28fb0014a2c086708fe954eaa885384a6165172e7e8" 44 | 45 | [[package]] 46 | name = "bitflags" 47 | version = "1.3.2" 48 | source = "registry+https://github.com/rust-lang/crates.io-index" 49 | checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" 50 | 51 | [[package]] 52 | name = "bitflags" 53 | version = "2.9.4" 54 | source = "registry+https://github.com/rust-lang/crates.io-index" 55 | checksum = "2261d10cca569e4643e526d8dc2e62e433cc8aba21ab764233731f8d369bf394" 56 | 57 | [[package]] 58 | name = "bumpalo" 59 | version = "3.19.0" 60 | source = "registry+https://github.com/rust-lang/crates.io-index" 61 | checksum = "46c5e41b57b8bba42a04676d81cb89e9ee8e859a1a66f80a5a72e1cb76b34d43" 62 | 63 | [[package]] 64 | name = "bytes" 65 | version = "1.10.1" 66 | source = "registry+https://github.com/rust-lang/crates.io-index" 67 | checksum = "d71b6127be86fdcfddb610f7182ac57211d4b18a3e9c82eb2d17662f2227ad6a" 68 | 69 | [[package]] 70 | name = "cfg-if" 71 | version = "1.0.3" 72 | source = "registry+https://github.com/rust-lang/crates.io-index" 73 | checksum = "2fd1289c04a9ea8cb22300a459a72a385d7c73d3259e2ed7dcb2af674838cfa9" 74 | 75 | [[package]] 76 | name = "cfg_aliases" 77 | version = "0.2.1" 78 | source = "registry+https://github.com/rust-lang/crates.io-index" 79 | checksum = "613afe47fcd5fac7ccf1db93babcb082c5994d996f20b8b159f2ad1658eb5724" 80 | 81 | [[package]] 82 | name = "concurrent-queue" 83 | version = "2.5.0" 84 | source = "registry+https://github.com/rust-lang/crates.io-index" 85 | checksum = "4ca0197aee26d1ae37445ee532fefce43251d24cc7c166799f4d46817f1d3973" 86 | dependencies = [ 87 | "crossbeam-utils", 88 | ] 89 | 90 | [[package]] 91 | name = "crossbeam-utils" 92 | version = "0.8.21" 93 | source = "registry+https://github.com/rust-lang/crates.io-index" 94 | checksum = "d0a5c400df2834b80a4c3327b3aad3a4c4cd4de0629063962b03235697506a28" 95 | 96 | [[package]] 97 | name = "displaydoc" 98 | version = "0.2.5" 99 | source = "registry+https://github.com/rust-lang/crates.io-index" 100 | checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0" 101 | dependencies = [ 102 | "proc-macro2", 103 | "quote", 104 | "syn", 105 | ] 106 | 107 | [[package]] 108 | name = "endi" 109 | version = "1.1.0" 110 | source = "registry+https://github.com/rust-lang/crates.io-index" 111 | checksum = "a3d8a32ae18130a3c84dd492d4215c3d913c3b07c6b63c2eb3eb7ff1101ab7bf" 112 | 113 | [[package]] 114 | name = "enumflags2" 115 | version = "0.7.12" 116 | source = "registry+https://github.com/rust-lang/crates.io-index" 117 | checksum = "1027f7680c853e056ebcec683615fb6fbbc07dbaa13b4d5d9442b146ded4ecef" 118 | dependencies = [ 119 | "enumflags2_derive", 120 | "serde", 121 | ] 122 | 123 | [[package]] 124 | name = "enumflags2_derive" 125 | version = "0.7.12" 126 | source = "registry+https://github.com/rust-lang/crates.io-index" 127 | checksum = "67c78a4d8fdf9953a5c9d458f9efe940fd97a0cab0941c075a813ac594733827" 128 | dependencies = [ 129 | "proc-macro2", 130 | "quote", 131 | "syn", 132 | ] 133 | 134 | [[package]] 135 | name = "equivalent" 136 | version = "1.0.2" 137 | source = "registry+https://github.com/rust-lang/crates.io-index" 138 | checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f" 139 | 140 | [[package]] 141 | name = "errno" 142 | version = "0.3.14" 143 | source = "registry+https://github.com/rust-lang/crates.io-index" 144 | checksum = "39cab71617ae0d63f51a36d69f866391735b51691dbda63cf6f96d042b63efeb" 145 | dependencies = [ 146 | "libc", 147 | "windows-sys 0.61.0", 148 | ] 149 | 150 | [[package]] 151 | name = "event-listener" 152 | version = "5.4.1" 153 | source = "registry+https://github.com/rust-lang/crates.io-index" 154 | checksum = "e13b66accf52311f30a0db42147dadea9850cb48cd070028831ae5f5d4b856ab" 155 | dependencies = [ 156 | "concurrent-queue", 157 | "parking", 158 | "pin-project-lite", 159 | ] 160 | 161 | [[package]] 162 | name = "event-listener-strategy" 163 | version = "0.5.4" 164 | source = "registry+https://github.com/rust-lang/crates.io-index" 165 | checksum = "8be9f3dfaaffdae2972880079a491a1a8bb7cbed0b8dd7a347f668b4150a3b93" 166 | dependencies = [ 167 | "event-listener", 168 | "pin-project-lite", 169 | ] 170 | 171 | [[package]] 172 | name = "fastrand" 173 | version = "2.3.0" 174 | source = "registry+https://github.com/rust-lang/crates.io-index" 175 | checksum = "37909eebbb50d72f9059c3b6d82c0463f2ff062c9e95845c43a6c9c0355411be" 176 | 177 | [[package]] 178 | name = "form_urlencoded" 179 | version = "1.2.2" 180 | source = "registry+https://github.com/rust-lang/crates.io-index" 181 | checksum = "cb4cb245038516f5f85277875cdaa4f7d2c9a0fa0468de06ed190163b1581fcf" 182 | dependencies = [ 183 | "percent-encoding", 184 | ] 185 | 186 | [[package]] 187 | name = "fsevent-sys" 188 | version = "4.1.0" 189 | source = "registry+https://github.com/rust-lang/crates.io-index" 190 | checksum = "76ee7a02da4d231650c7cea31349b889be2f45ddb3ef3032d2ec8185f6313fd2" 191 | dependencies = [ 192 | "libc", 193 | ] 194 | 195 | [[package]] 196 | name = "futures" 197 | version = "0.3.31" 198 | source = "registry+https://github.com/rust-lang/crates.io-index" 199 | checksum = "65bc07b1a8bc7c85c5f2e110c476c7389b4554ba72af57d8445ea63a576b0876" 200 | dependencies = [ 201 | "futures-channel", 202 | "futures-core", 203 | "futures-executor", 204 | "futures-io", 205 | "futures-sink", 206 | "futures-task", 207 | "futures-util", 208 | ] 209 | 210 | [[package]] 211 | name = "futures-channel" 212 | version = "0.3.31" 213 | source = "registry+https://github.com/rust-lang/crates.io-index" 214 | checksum = "2dff15bf788c671c1934e366d07e30c1814a8ef514e1af724a602e8a2fbe1b10" 215 | dependencies = [ 216 | "futures-core", 217 | "futures-sink", 218 | ] 219 | 220 | [[package]] 221 | name = "futures-core" 222 | version = "0.3.31" 223 | source = "registry+https://github.com/rust-lang/crates.io-index" 224 | checksum = "05f29059c0c2090612e8d742178b0580d2dc940c837851ad723096f87af6663e" 225 | 226 | [[package]] 227 | name = "futures-executor" 228 | version = "0.3.31" 229 | source = "registry+https://github.com/rust-lang/crates.io-index" 230 | checksum = "1e28d1d997f585e54aebc3f97d39e72338912123a67330d723fdbb564d646c9f" 231 | dependencies = [ 232 | "futures-core", 233 | "futures-task", 234 | "futures-util", 235 | ] 236 | 237 | [[package]] 238 | name = "futures-io" 239 | version = "0.3.31" 240 | source = "registry+https://github.com/rust-lang/crates.io-index" 241 | checksum = "9e5c1b78ca4aae1ac06c48a526a655760685149f0d465d21f37abfe57ce075c6" 242 | 243 | [[package]] 244 | name = "futures-lite" 245 | version = "2.6.1" 246 | source = "registry+https://github.com/rust-lang/crates.io-index" 247 | checksum = "f78e10609fe0e0b3f4157ffab1876319b5b0db102a2c60dc4626306dc46b44ad" 248 | dependencies = [ 249 | "fastrand", 250 | "futures-core", 251 | "futures-io", 252 | "parking", 253 | "pin-project-lite", 254 | ] 255 | 256 | [[package]] 257 | name = "futures-macro" 258 | version = "0.3.31" 259 | source = "registry+https://github.com/rust-lang/crates.io-index" 260 | checksum = "162ee34ebcb7c64a8abebc059ce0fee27c2262618d7b60ed8faf72fef13c3650" 261 | dependencies = [ 262 | "proc-macro2", 263 | "quote", 264 | "syn", 265 | ] 266 | 267 | [[package]] 268 | name = "futures-sink" 269 | version = "0.3.31" 270 | source = "registry+https://github.com/rust-lang/crates.io-index" 271 | checksum = "e575fab7d1e0dcb8d0c7bcf9a63ee213816ab51902e6d244a95819acacf1d4f7" 272 | 273 | [[package]] 274 | name = "futures-task" 275 | version = "0.3.31" 276 | source = "registry+https://github.com/rust-lang/crates.io-index" 277 | checksum = "f90f7dce0722e95104fcb095585910c0977252f286e354b5e3bd38902cd99988" 278 | 279 | [[package]] 280 | name = "futures-util" 281 | version = "0.3.31" 282 | source = "registry+https://github.com/rust-lang/crates.io-index" 283 | checksum = "9fa08315bb612088cc391249efdc3bc77536f16c91f6cf495e6fbe85b20a4a81" 284 | dependencies = [ 285 | "futures-channel", 286 | "futures-core", 287 | "futures-io", 288 | "futures-macro", 289 | "futures-sink", 290 | "futures-task", 291 | "memchr", 292 | "pin-project-lite", 293 | "pin-utils", 294 | "slab", 295 | ] 296 | 297 | [[package]] 298 | name = "getrandom" 299 | version = "0.3.3" 300 | source = "registry+https://github.com/rust-lang/crates.io-index" 301 | checksum = "26145e563e54f2cadc477553f1ec5ee650b00862f0a58bcd12cbdc5f0ea2d2f4" 302 | dependencies = [ 303 | "cfg-if", 304 | "libc", 305 | "r-efi", 306 | "wasi 0.14.4+wasi-0.2.4", 307 | ] 308 | 309 | [[package]] 310 | name = "hashbrown" 311 | version = "0.15.5" 312 | source = "registry+https://github.com/rust-lang/crates.io-index" 313 | checksum = "9229cfe53dfd69f0609a49f65461bd93001ea1ef889cd5529dd176593f5338a1" 314 | 315 | [[package]] 316 | name = "hex" 317 | version = "0.4.3" 318 | source = "registry+https://github.com/rust-lang/crates.io-index" 319 | checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70" 320 | 321 | [[package]] 322 | name = "icu_collections" 323 | version = "2.0.0" 324 | source = "registry+https://github.com/rust-lang/crates.io-index" 325 | checksum = "200072f5d0e3614556f94a9930d5dc3e0662a652823904c3a75dc3b0af7fee47" 326 | dependencies = [ 327 | "displaydoc", 328 | "potential_utf", 329 | "yoke", 330 | "zerofrom", 331 | "zerovec", 332 | ] 333 | 334 | [[package]] 335 | name = "icu_locale_core" 336 | version = "2.0.0" 337 | source = "registry+https://github.com/rust-lang/crates.io-index" 338 | checksum = "0cde2700ccaed3872079a65fb1a78f6c0a36c91570f28755dda67bc8f7d9f00a" 339 | dependencies = [ 340 | "displaydoc", 341 | "litemap", 342 | "tinystr", 343 | "writeable", 344 | "zerovec", 345 | ] 346 | 347 | [[package]] 348 | name = "icu_normalizer" 349 | version = "2.0.0" 350 | source = "registry+https://github.com/rust-lang/crates.io-index" 351 | checksum = "436880e8e18df4d7bbc06d58432329d6458cc84531f7ac5f024e93deadb37979" 352 | dependencies = [ 353 | "displaydoc", 354 | "icu_collections", 355 | "icu_normalizer_data", 356 | "icu_properties", 357 | "icu_provider", 358 | "smallvec", 359 | "zerovec", 360 | ] 361 | 362 | [[package]] 363 | name = "icu_normalizer_data" 364 | version = "2.0.0" 365 | source = "registry+https://github.com/rust-lang/crates.io-index" 366 | checksum = "00210d6893afc98edb752b664b8890f0ef174c8adbb8d0be9710fa66fbbf72d3" 367 | 368 | [[package]] 369 | name = "icu_properties" 370 | version = "2.0.1" 371 | source = "registry+https://github.com/rust-lang/crates.io-index" 372 | checksum = "016c619c1eeb94efb86809b015c58f479963de65bdb6253345c1a1276f22e32b" 373 | dependencies = [ 374 | "displaydoc", 375 | "icu_collections", 376 | "icu_locale_core", 377 | "icu_properties_data", 378 | "icu_provider", 379 | "potential_utf", 380 | "zerotrie", 381 | "zerovec", 382 | ] 383 | 384 | [[package]] 385 | name = "icu_properties_data" 386 | version = "2.0.1" 387 | source = "registry+https://github.com/rust-lang/crates.io-index" 388 | checksum = "298459143998310acd25ffe6810ed544932242d3f07083eee1084d83a71bd632" 389 | 390 | [[package]] 391 | name = "icu_provider" 392 | version = "2.0.0" 393 | source = "registry+https://github.com/rust-lang/crates.io-index" 394 | checksum = "03c80da27b5f4187909049ee2d72f276f0d9f99a42c306bd0131ecfe04d8e5af" 395 | dependencies = [ 396 | "displaydoc", 397 | "icu_locale_core", 398 | "stable_deref_trait", 399 | "tinystr", 400 | "writeable", 401 | "yoke", 402 | "zerofrom", 403 | "zerotrie", 404 | "zerovec", 405 | ] 406 | 407 | [[package]] 408 | name = "idna" 409 | version = "1.1.0" 410 | source = "registry+https://github.com/rust-lang/crates.io-index" 411 | checksum = "3b0875f23caa03898994f6ddc501886a45c7d3d62d04d2d90788d47be1b1e4de" 412 | dependencies = [ 413 | "idna_adapter", 414 | "smallvec", 415 | "utf8_iter", 416 | ] 417 | 418 | [[package]] 419 | name = "idna_adapter" 420 | version = "1.2.1" 421 | source = "registry+https://github.com/rust-lang/crates.io-index" 422 | checksum = "3acae9609540aa318d1bc588455225fb2085b9ed0c4f6bd0d9d5bcd86f1a0344" 423 | dependencies = [ 424 | "icu_normalizer", 425 | "icu_properties", 426 | ] 427 | 428 | [[package]] 429 | name = "indexmap" 430 | version = "2.11.1" 431 | source = "registry+https://github.com/rust-lang/crates.io-index" 432 | checksum = "206a8042aec68fa4a62e8d3f7aa4ceb508177d9324faf261e1959e495b7a1921" 433 | dependencies = [ 434 | "equivalent", 435 | "hashbrown", 436 | ] 437 | 438 | [[package]] 439 | name = "inotify" 440 | version = "0.11.0" 441 | source = "registry+https://github.com/rust-lang/crates.io-index" 442 | checksum = "f37dccff2791ab604f9babef0ba14fbe0be30bd368dc541e2b08d07c8aa908f3" 443 | dependencies = [ 444 | "bitflags 2.9.4", 445 | "inotify-sys", 446 | "libc", 447 | ] 448 | 449 | [[package]] 450 | name = "inotify-sys" 451 | version = "0.1.5" 452 | source = "registry+https://github.com/rust-lang/crates.io-index" 453 | checksum = "e05c02b5e89bff3b946cedeca278abc628fe811e604f027c45a8aa3cf793d0eb" 454 | dependencies = [ 455 | "libc", 456 | ] 457 | 458 | [[package]] 459 | name = "js-sys" 460 | version = "0.3.81" 461 | source = "registry+https://github.com/rust-lang/crates.io-index" 462 | checksum = "ec48937a97411dcb524a265206ccd4c90bb711fca92b2792c407f268825b9305" 463 | dependencies = [ 464 | "once_cell", 465 | "wasm-bindgen", 466 | ] 467 | 468 | [[package]] 469 | name = "kqueue" 470 | version = "1.1.1" 471 | source = "registry+https://github.com/rust-lang/crates.io-index" 472 | checksum = "eac30106d7dce88daf4a3fcb4879ea939476d5074a9b7ddd0fb97fa4bed5596a" 473 | dependencies = [ 474 | "kqueue-sys", 475 | "libc", 476 | ] 477 | 478 | [[package]] 479 | name = "kqueue-sys" 480 | version = "1.0.4" 481 | source = "registry+https://github.com/rust-lang/crates.io-index" 482 | checksum = "ed9625ffda8729b85e45cf04090035ac368927b8cebc34898e7c120f52e4838b" 483 | dependencies = [ 484 | "bitflags 1.3.2", 485 | "libc", 486 | ] 487 | 488 | [[package]] 489 | name = "lazy_static" 490 | version = "1.5.0" 491 | source = "registry+https://github.com/rust-lang/crates.io-index" 492 | checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" 493 | 494 | [[package]] 495 | name = "libc" 496 | version = "0.2.175" 497 | source = "registry+https://github.com/rust-lang/crates.io-index" 498 | checksum = "6a82ae493e598baaea5209805c49bbf2ea7de956d50d7da0da1164f9c6d28543" 499 | 500 | [[package]] 501 | name = "linux-raw-sys" 502 | version = "0.9.4" 503 | source = "registry+https://github.com/rust-lang/crates.io-index" 504 | checksum = "cd945864f07fe9f5371a27ad7b52a172b4b499999f1d97574c9fa68373937e12" 505 | 506 | [[package]] 507 | name = "linux-raw-sys" 508 | version = "0.11.0" 509 | source = "registry+https://github.com/rust-lang/crates.io-index" 510 | checksum = "df1d3c3b53da64cf5760482273a98e575c651a67eec7f77df96b5b642de8f039" 511 | 512 | [[package]] 513 | name = "litemap" 514 | version = "0.8.0" 515 | source = "registry+https://github.com/rust-lang/crates.io-index" 516 | checksum = "241eaef5fd12c88705a01fc1066c48c4b36e0dd4377dcdc7ec3942cea7a69956" 517 | 518 | [[package]] 519 | name = "lock_api" 520 | version = "0.4.13" 521 | source = "registry+https://github.com/rust-lang/crates.io-index" 522 | checksum = "96936507f153605bddfcda068dd804796c84324ed2510809e5b2a624c81da765" 523 | dependencies = [ 524 | "autocfg", 525 | "scopeguard", 526 | ] 527 | 528 | [[package]] 529 | name = "log" 530 | version = "0.4.28" 531 | source = "registry+https://github.com/rust-lang/crates.io-index" 532 | checksum = "34080505efa8e45a4b816c349525ebe327ceaa8559756f0356cba97ef3bf7432" 533 | 534 | [[package]] 535 | name = "memchr" 536 | version = "2.7.5" 537 | source = "registry+https://github.com/rust-lang/crates.io-index" 538 | checksum = "32a282da65faaf38286cf3be983213fcf1d2e2a58700e808f83f4ea9a4804bc0" 539 | 540 | [[package]] 541 | name = "memoffset" 542 | version = "0.9.1" 543 | source = "registry+https://github.com/rust-lang/crates.io-index" 544 | checksum = "488016bfae457b036d996092f6cb448677611ce4449e970ceaf42695203f218a" 545 | dependencies = [ 546 | "autocfg", 547 | ] 548 | 549 | [[package]] 550 | name = "mio" 551 | version = "1.0.4" 552 | source = "registry+https://github.com/rust-lang/crates.io-index" 553 | checksum = "78bed444cc8a2160f01cbcf811ef18cac863ad68ae8ca62092e8db51d51c761c" 554 | dependencies = [ 555 | "libc", 556 | "log", 557 | "wasi 0.11.1+wasi-snapshot-preview1", 558 | "windows-sys 0.59.0", 559 | ] 560 | 561 | [[package]] 562 | name = "nix" 563 | version = "0.30.1" 564 | source = "registry+https://github.com/rust-lang/crates.io-index" 565 | checksum = "74523f3a35e05aba87a1d978330aef40f67b0304ac79c1c00b294c9830543db6" 566 | dependencies = [ 567 | "bitflags 2.9.4", 568 | "cfg-if", 569 | "cfg_aliases", 570 | "libc", 571 | "memoffset", 572 | ] 573 | 574 | [[package]] 575 | name = "notify" 576 | version = "8.2.0" 577 | source = "registry+https://github.com/rust-lang/crates.io-index" 578 | checksum = "4d3d07927151ff8575b7087f245456e549fea62edf0ec4e565a5ee50c8402bc3" 579 | dependencies = [ 580 | "bitflags 2.9.4", 581 | "fsevent-sys", 582 | "inotify", 583 | "kqueue", 584 | "libc", 585 | "log", 586 | "mio", 587 | "notify-types", 588 | "walkdir", 589 | "windows-sys 0.60.2", 590 | ] 591 | 592 | [[package]] 593 | name = "notify-types" 594 | version = "2.0.0" 595 | source = "registry+https://github.com/rust-lang/crates.io-index" 596 | checksum = "5e0826a989adedc2a244799e823aece04662b66609d96af8dff7ac6df9a8925d" 597 | 598 | [[package]] 599 | name = "nu-ansi-term" 600 | version = "0.50.1" 601 | source = "registry+https://github.com/rust-lang/crates.io-index" 602 | checksum = "d4a28e057d01f97e61255210fcff094d74ed0466038633e95017f5beb68e4399" 603 | dependencies = [ 604 | "windows-sys 0.52.0", 605 | ] 606 | 607 | [[package]] 608 | name = "once_cell" 609 | version = "1.21.3" 610 | source = "registry+https://github.com/rust-lang/crates.io-index" 611 | checksum = "42f5e15c9953c5e4ccceeb2e7382a716482c34515315f7b03532b8b4e8393d2d" 612 | 613 | [[package]] 614 | name = "ordered-stream" 615 | version = "0.2.0" 616 | source = "registry+https://github.com/rust-lang/crates.io-index" 617 | checksum = "9aa2b01e1d916879f73a53d01d1d6cee68adbb31d6d9177a8cfce093cced1d50" 618 | dependencies = [ 619 | "futures-core", 620 | "pin-project-lite", 621 | ] 622 | 623 | [[package]] 624 | name = "parking" 625 | version = "2.2.1" 626 | source = "registry+https://github.com/rust-lang/crates.io-index" 627 | checksum = "f38d5652c16fde515bb1ecef450ab0f6a219d619a7274976324d5e377f7dceba" 628 | 629 | [[package]] 630 | name = "parking_lot" 631 | version = "0.12.4" 632 | source = "registry+https://github.com/rust-lang/crates.io-index" 633 | checksum = "70d58bf43669b5795d1576d0641cfb6fbb2057bf629506267a92807158584a13" 634 | dependencies = [ 635 | "lock_api", 636 | "parking_lot_core", 637 | ] 638 | 639 | [[package]] 640 | name = "parking_lot_core" 641 | version = "0.9.11" 642 | source = "registry+https://github.com/rust-lang/crates.io-index" 643 | checksum = "bc838d2a56b5b1a6c25f55575dfc605fabb63bb2365f6c2353ef9159aa69e4a5" 644 | dependencies = [ 645 | "cfg-if", 646 | "libc", 647 | "redox_syscall", 648 | "smallvec", 649 | "windows-targets 0.52.6", 650 | ] 651 | 652 | [[package]] 653 | name = "percent-encoding" 654 | version = "2.3.2" 655 | source = "registry+https://github.com/rust-lang/crates.io-index" 656 | checksum = "9b4f627cb1b25917193a259e49bdad08f671f8d9708acfd5fe0a8c1455d87220" 657 | 658 | [[package]] 659 | name = "pin-project-lite" 660 | version = "0.2.16" 661 | source = "registry+https://github.com/rust-lang/crates.io-index" 662 | checksum = "3b3cff922bd51709b605d9ead9aa71031d81447142d828eb4a6eba76fe619f9b" 663 | 664 | [[package]] 665 | name = "pin-utils" 666 | version = "0.1.0" 667 | source = "registry+https://github.com/rust-lang/crates.io-index" 668 | checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" 669 | 670 | [[package]] 671 | name = "potential_utf" 672 | version = "0.1.3" 673 | source = "registry+https://github.com/rust-lang/crates.io-index" 674 | checksum = "84df19adbe5b5a0782edcab45899906947ab039ccf4573713735ee7de1e6b08a" 675 | dependencies = [ 676 | "zerovec", 677 | ] 678 | 679 | [[package]] 680 | name = "proc-macro-crate" 681 | version = "3.3.0" 682 | source = "registry+https://github.com/rust-lang/crates.io-index" 683 | checksum = "edce586971a4dfaa28950c6f18ed55e0406c1ab88bbce2c6f6293a7aaba73d35" 684 | dependencies = [ 685 | "toml_edit", 686 | ] 687 | 688 | [[package]] 689 | name = "proc-macro2" 690 | version = "1.0.101" 691 | source = "registry+https://github.com/rust-lang/crates.io-index" 692 | checksum = "89ae43fd86e4158d6db51ad8e2b80f313af9cc74f5c0e03ccb87de09998732de" 693 | dependencies = [ 694 | "unicode-ident", 695 | ] 696 | 697 | [[package]] 698 | name = "quote" 699 | version = "1.0.40" 700 | source = "registry+https://github.com/rust-lang/crates.io-index" 701 | checksum = "1885c039570dc00dcb4ff087a89e185fd56bae234ddc7f056a945bf36467248d" 702 | dependencies = [ 703 | "proc-macro2", 704 | ] 705 | 706 | [[package]] 707 | name = "r-efi" 708 | version = "5.3.0" 709 | source = "registry+https://github.com/rust-lang/crates.io-index" 710 | checksum = "69cdb34c158ceb288df11e18b4bd39de994f6657d83847bdffdbd7f346754b0f" 711 | 712 | [[package]] 713 | name = "redox_syscall" 714 | version = "0.5.17" 715 | source = "registry+https://github.com/rust-lang/crates.io-index" 716 | checksum = "5407465600fb0548f1442edf71dd20683c6ed326200ace4b1ef0763521bb3b77" 717 | dependencies = [ 718 | "bitflags 2.9.4", 719 | ] 720 | 721 | [[package]] 722 | name = "rustix" 723 | version = "1.1.1" 724 | source = "registry+https://github.com/rust-lang/crates.io-index" 725 | checksum = "9621e389a110cae094269936383d69b869492f03e5c1ed2d575a53c029d4441d" 726 | dependencies = [ 727 | "bitflags 2.9.4", 728 | "errno", 729 | "libc", 730 | "linux-raw-sys 0.11.0", 731 | "linux-raw-sys 0.9.4", 732 | "windows-sys 0.61.0", 733 | ] 734 | 735 | [[package]] 736 | name = "rustversion" 737 | version = "1.0.22" 738 | source = "registry+https://github.com/rust-lang/crates.io-index" 739 | checksum = "b39cdef0fa800fc44525c84ccb54a029961a8215f9619753635a9c0d2538d46d" 740 | 741 | [[package]] 742 | name = "same-file" 743 | version = "1.0.6" 744 | source = "registry+https://github.com/rust-lang/crates.io-index" 745 | checksum = "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502" 746 | dependencies = [ 747 | "winapi-util", 748 | ] 749 | 750 | [[package]] 751 | name = "scopeguard" 752 | version = "1.2.0" 753 | source = "registry+https://github.com/rust-lang/crates.io-index" 754 | checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" 755 | 756 | [[package]] 757 | name = "serde" 758 | version = "1.0.219" 759 | source = "registry+https://github.com/rust-lang/crates.io-index" 760 | checksum = "5f0e2c6ed6606019b4e29e69dbaba95b11854410e5347d525002456dbbb786b6" 761 | dependencies = [ 762 | "serde_derive", 763 | ] 764 | 765 | [[package]] 766 | name = "serde_derive" 767 | version = "1.0.219" 768 | source = "registry+https://github.com/rust-lang/crates.io-index" 769 | checksum = "5b0276cf7f2c73365f7157c8123c21cd9a50fbbd844757af28ca1f5925fc2a00" 770 | dependencies = [ 771 | "proc-macro2", 772 | "quote", 773 | "syn", 774 | ] 775 | 776 | [[package]] 777 | name = "serde_repr" 778 | version = "0.1.20" 779 | source = "registry+https://github.com/rust-lang/crates.io-index" 780 | checksum = "175ee3e80ae9982737ca543e96133087cbd9a485eecc3bc4de9c1a37b47ea59c" 781 | dependencies = [ 782 | "proc-macro2", 783 | "quote", 784 | "syn", 785 | ] 786 | 787 | [[package]] 788 | name = "serde_spanned" 789 | version = "1.0.0" 790 | source = "registry+https://github.com/rust-lang/crates.io-index" 791 | checksum = "40734c41988f7306bb04f0ecf60ec0f3f1caa34290e4e8ea471dcd3346483b83" 792 | dependencies = [ 793 | "serde", 794 | ] 795 | 796 | [[package]] 797 | name = "sharded-slab" 798 | version = "0.1.7" 799 | source = "registry+https://github.com/rust-lang/crates.io-index" 800 | checksum = "f40ca3c46823713e0d4209592e8d6e826aa57e928f09752619fc696c499637f6" 801 | dependencies = [ 802 | "lazy_static", 803 | ] 804 | 805 | [[package]] 806 | name = "signal-hook-registry" 807 | version = "1.4.6" 808 | source = "registry+https://github.com/rust-lang/crates.io-index" 809 | checksum = "b2a4719bff48cee6b39d12c020eeb490953ad2443b7055bd0b21fca26bd8c28b" 810 | dependencies = [ 811 | "libc", 812 | ] 813 | 814 | [[package]] 815 | name = "slab" 816 | version = "0.4.11" 817 | source = "registry+https://github.com/rust-lang/crates.io-index" 818 | checksum = "7a2ae44ef20feb57a68b23d846850f861394c2e02dc425a50098ae8c90267589" 819 | 820 | [[package]] 821 | name = "smallvec" 822 | version = "1.15.1" 823 | source = "registry+https://github.com/rust-lang/crates.io-index" 824 | checksum = "67b1b7a3b5fe4f1376887184045fcf45c69e92af734b7aaddc05fb777b6fbd03" 825 | 826 | [[package]] 827 | name = "socket2" 828 | version = "0.6.0" 829 | source = "registry+https://github.com/rust-lang/crates.io-index" 830 | checksum = "233504af464074f9d066d7b5416c5f9b894a5862a6506e306f7b816cdd6f1807" 831 | dependencies = [ 832 | "libc", 833 | "windows-sys 0.59.0", 834 | ] 835 | 836 | [[package]] 837 | name = "stable_deref_trait" 838 | version = "1.2.0" 839 | source = "registry+https://github.com/rust-lang/crates.io-index" 840 | checksum = "a8f112729512f8e442d81f95a8a7ddf2b7c6b8a1a6f509a95864142b30cab2d3" 841 | 842 | [[package]] 843 | name = "static_assertions" 844 | version = "1.1.0" 845 | source = "registry+https://github.com/rust-lang/crates.io-index" 846 | checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f" 847 | 848 | [[package]] 849 | name = "syn" 850 | version = "2.0.106" 851 | source = "registry+https://github.com/rust-lang/crates.io-index" 852 | checksum = "ede7c438028d4436d71104916910f5bb611972c5cfd7f89b8300a8186e6fada6" 853 | dependencies = [ 854 | "proc-macro2", 855 | "quote", 856 | "unicode-ident", 857 | ] 858 | 859 | [[package]] 860 | name = "synstructure" 861 | version = "0.13.2" 862 | source = "registry+https://github.com/rust-lang/crates.io-index" 863 | checksum = "728a70f3dbaf5bab7f0c4b1ac8d7ae5ea60a4b5549c8a5914361c99147a709d2" 864 | dependencies = [ 865 | "proc-macro2", 866 | "quote", 867 | "syn", 868 | ] 869 | 870 | [[package]] 871 | name = "tempfile" 872 | version = "3.21.0" 873 | source = "registry+https://github.com/rust-lang/crates.io-index" 874 | checksum = "15b61f8f20e3a6f7e0649d825294eaf317edce30f82cf6026e7e4cb9222a7d1e" 875 | dependencies = [ 876 | "fastrand", 877 | "getrandom", 878 | "once_cell", 879 | "rustix", 880 | "windows-sys 0.60.2", 881 | ] 882 | 883 | [[package]] 884 | name = "thread_local" 885 | version = "1.1.9" 886 | source = "registry+https://github.com/rust-lang/crates.io-index" 887 | checksum = "f60246a4944f24f6e018aa17cdeffb7818b76356965d03b07d6a9886e8962185" 888 | dependencies = [ 889 | "cfg-if", 890 | ] 891 | 892 | [[package]] 893 | name = "tinystr" 894 | version = "0.8.1" 895 | source = "registry+https://github.com/rust-lang/crates.io-index" 896 | checksum = "5d4f6d1145dcb577acf783d4e601bc1d76a13337bb54e6233add580b07344c8b" 897 | dependencies = [ 898 | "displaydoc", 899 | "zerovec", 900 | ] 901 | 902 | [[package]] 903 | name = "tokio" 904 | version = "1.48.0" 905 | source = "registry+https://github.com/rust-lang/crates.io-index" 906 | checksum = "ff360e02eab121e0bc37a2d3b4d4dc622e6eda3a8e5253d5435ecf5bd4c68408" 907 | dependencies = [ 908 | "bytes", 909 | "libc", 910 | "mio", 911 | "parking_lot", 912 | "pin-project-lite", 913 | "signal-hook-registry", 914 | "socket2", 915 | "tokio-macros", 916 | "tracing", 917 | "windows-sys 0.61.0", 918 | ] 919 | 920 | [[package]] 921 | name = "tokio-macros" 922 | version = "2.6.0" 923 | source = "registry+https://github.com/rust-lang/crates.io-index" 924 | checksum = "af407857209536a95c8e56f8231ef2c2e2aff839b22e07a1ffcbc617e9db9fa5" 925 | dependencies = [ 926 | "proc-macro2", 927 | "quote", 928 | "syn", 929 | ] 930 | 931 | [[package]] 932 | name = "toml" 933 | version = "0.9.5" 934 | source = "registry+https://github.com/rust-lang/crates.io-index" 935 | checksum = "75129e1dc5000bfbaa9fee9d1b21f974f9fbad9daec557a521ee6e080825f6e8" 936 | dependencies = [ 937 | "indexmap", 938 | "serde", 939 | "serde_spanned", 940 | "toml_datetime 0.7.0", 941 | "toml_parser", 942 | "toml_writer", 943 | "winnow", 944 | ] 945 | 946 | [[package]] 947 | name = "toml_datetime" 948 | version = "0.6.11" 949 | source = "registry+https://github.com/rust-lang/crates.io-index" 950 | checksum = "22cddaf88f4fbc13c51aebbf5f8eceb5c7c5a9da2ac40a13519eb5b0a0e8f11c" 951 | 952 | [[package]] 953 | name = "toml_datetime" 954 | version = "0.7.0" 955 | source = "registry+https://github.com/rust-lang/crates.io-index" 956 | checksum = "bade1c3e902f58d73d3f294cd7f20391c1cb2fbcb643b73566bc773971df91e3" 957 | dependencies = [ 958 | "serde", 959 | ] 960 | 961 | [[package]] 962 | name = "toml_edit" 963 | version = "0.22.27" 964 | source = "registry+https://github.com/rust-lang/crates.io-index" 965 | checksum = "41fe8c660ae4257887cf66394862d21dbca4a6ddd26f04a3560410406a2f819a" 966 | dependencies = [ 967 | "indexmap", 968 | "toml_datetime 0.6.11", 969 | "winnow", 970 | ] 971 | 972 | [[package]] 973 | name = "toml_parser" 974 | version = "1.0.2" 975 | source = "registry+https://github.com/rust-lang/crates.io-index" 976 | checksum = "b551886f449aa90d4fe2bdaa9f4a2577ad2dde302c61ecf262d80b116db95c10" 977 | dependencies = [ 978 | "winnow", 979 | ] 980 | 981 | [[package]] 982 | name = "toml_writer" 983 | version = "1.0.2" 984 | source = "registry+https://github.com/rust-lang/crates.io-index" 985 | checksum = "fcc842091f2def52017664b53082ecbbeb5c7731092bad69d2c63050401dfd64" 986 | 987 | [[package]] 988 | name = "tracing" 989 | version = "0.1.41" 990 | source = "registry+https://github.com/rust-lang/crates.io-index" 991 | checksum = "784e0ac535deb450455cbfa28a6f0df145ea1bb7ae51b821cf5e7927fdcfbdd0" 992 | dependencies = [ 993 | "pin-project-lite", 994 | "tracing-attributes", 995 | "tracing-core", 996 | ] 997 | 998 | [[package]] 999 | name = "tracing-attributes" 1000 | version = "0.1.30" 1001 | source = "registry+https://github.com/rust-lang/crates.io-index" 1002 | checksum = "81383ab64e72a7a8b8e13130c49e3dab29def6d0c7d76a03087b3cf71c5c6903" 1003 | dependencies = [ 1004 | "proc-macro2", 1005 | "quote", 1006 | "syn", 1007 | ] 1008 | 1009 | [[package]] 1010 | name = "tracing-core" 1011 | version = "0.1.34" 1012 | source = "registry+https://github.com/rust-lang/crates.io-index" 1013 | checksum = "b9d12581f227e93f094d3af2ae690a574abb8a2b9b7a96e7cfe9647b2b617678" 1014 | dependencies = [ 1015 | "once_cell", 1016 | "valuable", 1017 | ] 1018 | 1019 | [[package]] 1020 | name = "tracing-log" 1021 | version = "0.2.0" 1022 | source = "registry+https://github.com/rust-lang/crates.io-index" 1023 | checksum = "ee855f1f400bd0e5c02d150ae5de3840039a3f54b025156404e34c23c03f47c3" 1024 | dependencies = [ 1025 | "log", 1026 | "once_cell", 1027 | "tracing-core", 1028 | ] 1029 | 1030 | [[package]] 1031 | name = "tracing-subscriber" 1032 | version = "0.3.20" 1033 | source = "registry+https://github.com/rust-lang/crates.io-index" 1034 | checksum = "2054a14f5307d601f88daf0553e1cbf472acc4f2c51afab632431cdcd72124d5" 1035 | dependencies = [ 1036 | "nu-ansi-term", 1037 | "sharded-slab", 1038 | "smallvec", 1039 | "thread_local", 1040 | "tracing-core", 1041 | "tracing-log", 1042 | ] 1043 | 1044 | [[package]] 1045 | name = "uds_windows" 1046 | version = "1.1.0" 1047 | source = "registry+https://github.com/rust-lang/crates.io-index" 1048 | checksum = "89daebc3e6fd160ac4aa9fc8b3bf71e1f74fbf92367ae71fb83a037e8bf164b9" 1049 | dependencies = [ 1050 | "memoffset", 1051 | "tempfile", 1052 | "winapi", 1053 | ] 1054 | 1055 | [[package]] 1056 | name = "unicode-ident" 1057 | version = "1.0.18" 1058 | source = "registry+https://github.com/rust-lang/crates.io-index" 1059 | checksum = "5a5f39404a5da50712a4c1eecf25e90dd62b613502b7e925fd4e4d19b5c96512" 1060 | 1061 | [[package]] 1062 | name = "url" 1063 | version = "2.5.7" 1064 | source = "registry+https://github.com/rust-lang/crates.io-index" 1065 | checksum = "08bc136a29a3d1758e07a9cca267be308aeebf5cfd5a10f3f67ab2097683ef5b" 1066 | dependencies = [ 1067 | "form_urlencoded", 1068 | "idna", 1069 | "percent-encoding", 1070 | "serde", 1071 | ] 1072 | 1073 | [[package]] 1074 | name = "utf8_iter" 1075 | version = "1.0.4" 1076 | source = "registry+https://github.com/rust-lang/crates.io-index" 1077 | checksum = "b6c140620e7ffbb22c2dee59cafe6084a59b5ffc27a8859a5f0d494b5d52b6be" 1078 | 1079 | [[package]] 1080 | name = "uuid" 1081 | version = "1.18.1" 1082 | source = "registry+https://github.com/rust-lang/crates.io-index" 1083 | checksum = "2f87b8aa10b915a06587d0dec516c282ff295b475d94abf425d62b57710070a2" 1084 | dependencies = [ 1085 | "js-sys", 1086 | "serde", 1087 | "wasm-bindgen", 1088 | ] 1089 | 1090 | [[package]] 1091 | name = "valuable" 1092 | version = "0.1.1" 1093 | source = "registry+https://github.com/rust-lang/crates.io-index" 1094 | checksum = "ba73ea9cf16a25df0c8caa16c51acb937d5712a8429db78a3ee29d5dcacd3a65" 1095 | 1096 | [[package]] 1097 | name = "walkdir" 1098 | version = "2.5.0" 1099 | source = "registry+https://github.com/rust-lang/crates.io-index" 1100 | checksum = "29790946404f91d9c5d06f9874efddea1dc06c5efe94541a7d6863108e3a5e4b" 1101 | dependencies = [ 1102 | "same-file", 1103 | "winapi-util", 1104 | ] 1105 | 1106 | [[package]] 1107 | name = "wasi" 1108 | version = "0.11.1+wasi-snapshot-preview1" 1109 | source = "registry+https://github.com/rust-lang/crates.io-index" 1110 | checksum = "ccf3ec651a847eb01de73ccad15eb7d99f80485de043efb2f370cd654f4ea44b" 1111 | 1112 | [[package]] 1113 | name = "wasi" 1114 | version = "0.14.4+wasi-0.2.4" 1115 | source = "registry+https://github.com/rust-lang/crates.io-index" 1116 | checksum = "88a5f4a424faf49c3c2c344f166f0662341d470ea185e939657aaff130f0ec4a" 1117 | dependencies = [ 1118 | "wit-bindgen", 1119 | ] 1120 | 1121 | [[package]] 1122 | name = "wasm-bindgen" 1123 | version = "0.2.104" 1124 | source = "registry+https://github.com/rust-lang/crates.io-index" 1125 | checksum = "c1da10c01ae9f1ae40cbfac0bac3b1e724b320abfcf52229f80b547c0d250e2d" 1126 | dependencies = [ 1127 | "cfg-if", 1128 | "once_cell", 1129 | "rustversion", 1130 | "wasm-bindgen-macro", 1131 | "wasm-bindgen-shared", 1132 | ] 1133 | 1134 | [[package]] 1135 | name = "wasm-bindgen-backend" 1136 | version = "0.2.104" 1137 | source = "registry+https://github.com/rust-lang/crates.io-index" 1138 | checksum = "671c9a5a66f49d8a47345ab942e2cb93c7d1d0339065d4f8139c486121b43b19" 1139 | dependencies = [ 1140 | "bumpalo", 1141 | "log", 1142 | "proc-macro2", 1143 | "quote", 1144 | "syn", 1145 | "wasm-bindgen-shared", 1146 | ] 1147 | 1148 | [[package]] 1149 | name = "wasm-bindgen-macro" 1150 | version = "0.2.104" 1151 | source = "registry+https://github.com/rust-lang/crates.io-index" 1152 | checksum = "7ca60477e4c59f5f2986c50191cd972e3a50d8a95603bc9434501cf156a9a119" 1153 | dependencies = [ 1154 | "quote", 1155 | "wasm-bindgen-macro-support", 1156 | ] 1157 | 1158 | [[package]] 1159 | name = "wasm-bindgen-macro-support" 1160 | version = "0.2.104" 1161 | source = "registry+https://github.com/rust-lang/crates.io-index" 1162 | checksum = "9f07d2f20d4da7b26400c9f4a0511e6e0345b040694e8a75bd41d578fa4421d7" 1163 | dependencies = [ 1164 | "proc-macro2", 1165 | "quote", 1166 | "syn", 1167 | "wasm-bindgen-backend", 1168 | "wasm-bindgen-shared", 1169 | ] 1170 | 1171 | [[package]] 1172 | name = "wasm-bindgen-shared" 1173 | version = "0.2.104" 1174 | source = "registry+https://github.com/rust-lang/crates.io-index" 1175 | checksum = "bad67dc8b2a1a6e5448428adec4c3e84c43e561d8c9ee8a9e5aabeb193ec41d1" 1176 | dependencies = [ 1177 | "unicode-ident", 1178 | ] 1179 | 1180 | [[package]] 1181 | name = "winapi" 1182 | version = "0.3.9" 1183 | source = "registry+https://github.com/rust-lang/crates.io-index" 1184 | checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419" 1185 | dependencies = [ 1186 | "winapi-i686-pc-windows-gnu", 1187 | "winapi-x86_64-pc-windows-gnu", 1188 | ] 1189 | 1190 | [[package]] 1191 | name = "winapi-i686-pc-windows-gnu" 1192 | version = "0.4.0" 1193 | source = "registry+https://github.com/rust-lang/crates.io-index" 1194 | checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" 1195 | 1196 | [[package]] 1197 | name = "winapi-util" 1198 | version = "0.1.11" 1199 | source = "registry+https://github.com/rust-lang/crates.io-index" 1200 | checksum = "c2a7b1c03c876122aa43f3020e6c3c3ee5c05081c9a00739faf7503aeba10d22" 1201 | dependencies = [ 1202 | "windows-sys 0.61.0", 1203 | ] 1204 | 1205 | [[package]] 1206 | name = "winapi-x86_64-pc-windows-gnu" 1207 | version = "0.4.0" 1208 | source = "registry+https://github.com/rust-lang/crates.io-index" 1209 | checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" 1210 | 1211 | [[package]] 1212 | name = "windows-link" 1213 | version = "0.1.3" 1214 | source = "registry+https://github.com/rust-lang/crates.io-index" 1215 | checksum = "5e6ad25900d524eaabdbbb96d20b4311e1e7ae1699af4fb28c17ae66c80d798a" 1216 | 1217 | [[package]] 1218 | name = "windows-link" 1219 | version = "0.2.0" 1220 | source = "registry+https://github.com/rust-lang/crates.io-index" 1221 | checksum = "45e46c0661abb7180e7b9c281db115305d49ca1709ab8242adf09666d2173c65" 1222 | 1223 | [[package]] 1224 | name = "windows-sys" 1225 | version = "0.52.0" 1226 | source = "registry+https://github.com/rust-lang/crates.io-index" 1227 | checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d" 1228 | dependencies = [ 1229 | "windows-targets 0.52.6", 1230 | ] 1231 | 1232 | [[package]] 1233 | name = "windows-sys" 1234 | version = "0.59.0" 1235 | source = "registry+https://github.com/rust-lang/crates.io-index" 1236 | checksum = "1e38bc4d79ed67fd075bcc251a1c39b32a1776bbe92e5bef1f0bf1f8c531853b" 1237 | dependencies = [ 1238 | "windows-targets 0.52.6", 1239 | ] 1240 | 1241 | [[package]] 1242 | name = "windows-sys" 1243 | version = "0.60.2" 1244 | source = "registry+https://github.com/rust-lang/crates.io-index" 1245 | checksum = "f2f500e4d28234f72040990ec9d39e3a6b950f9f22d3dba18416c35882612bcb" 1246 | dependencies = [ 1247 | "windows-targets 0.53.3", 1248 | ] 1249 | 1250 | [[package]] 1251 | name = "windows-sys" 1252 | version = "0.61.0" 1253 | source = "registry+https://github.com/rust-lang/crates.io-index" 1254 | checksum = "e201184e40b2ede64bc2ea34968b28e33622acdbbf37104f0e4a33f7abe657aa" 1255 | dependencies = [ 1256 | "windows-link 0.2.0", 1257 | ] 1258 | 1259 | [[package]] 1260 | name = "windows-targets" 1261 | version = "0.52.6" 1262 | source = "registry+https://github.com/rust-lang/crates.io-index" 1263 | checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973" 1264 | dependencies = [ 1265 | "windows_aarch64_gnullvm 0.52.6", 1266 | "windows_aarch64_msvc 0.52.6", 1267 | "windows_i686_gnu 0.52.6", 1268 | "windows_i686_gnullvm 0.52.6", 1269 | "windows_i686_msvc 0.52.6", 1270 | "windows_x86_64_gnu 0.52.6", 1271 | "windows_x86_64_gnullvm 0.52.6", 1272 | "windows_x86_64_msvc 0.52.6", 1273 | ] 1274 | 1275 | [[package]] 1276 | name = "windows-targets" 1277 | version = "0.53.3" 1278 | source = "registry+https://github.com/rust-lang/crates.io-index" 1279 | checksum = "d5fe6031c4041849d7c496a8ded650796e7b6ecc19df1a431c1a363342e5dc91" 1280 | dependencies = [ 1281 | "windows-link 0.1.3", 1282 | "windows_aarch64_gnullvm 0.53.0", 1283 | "windows_aarch64_msvc 0.53.0", 1284 | "windows_i686_gnu 0.53.0", 1285 | "windows_i686_gnullvm 0.53.0", 1286 | "windows_i686_msvc 0.53.0", 1287 | "windows_x86_64_gnu 0.53.0", 1288 | "windows_x86_64_gnullvm 0.53.0", 1289 | "windows_x86_64_msvc 0.53.0", 1290 | ] 1291 | 1292 | [[package]] 1293 | name = "windows_aarch64_gnullvm" 1294 | version = "0.52.6" 1295 | source = "registry+https://github.com/rust-lang/crates.io-index" 1296 | checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3" 1297 | 1298 | [[package]] 1299 | name = "windows_aarch64_gnullvm" 1300 | version = "0.53.0" 1301 | source = "registry+https://github.com/rust-lang/crates.io-index" 1302 | checksum = "86b8d5f90ddd19cb4a147a5fa63ca848db3df085e25fee3cc10b39b6eebae764" 1303 | 1304 | [[package]] 1305 | name = "windows_aarch64_msvc" 1306 | version = "0.52.6" 1307 | source = "registry+https://github.com/rust-lang/crates.io-index" 1308 | checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469" 1309 | 1310 | [[package]] 1311 | name = "windows_aarch64_msvc" 1312 | version = "0.53.0" 1313 | source = "registry+https://github.com/rust-lang/crates.io-index" 1314 | checksum = "c7651a1f62a11b8cbd5e0d42526e55f2c99886c77e007179efff86c2b137e66c" 1315 | 1316 | [[package]] 1317 | name = "windows_i686_gnu" 1318 | version = "0.52.6" 1319 | source = "registry+https://github.com/rust-lang/crates.io-index" 1320 | checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b" 1321 | 1322 | [[package]] 1323 | name = "windows_i686_gnu" 1324 | version = "0.53.0" 1325 | source = "registry+https://github.com/rust-lang/crates.io-index" 1326 | checksum = "c1dc67659d35f387f5f6c479dc4e28f1d4bb90ddd1a5d3da2e5d97b42d6272c3" 1327 | 1328 | [[package]] 1329 | name = "windows_i686_gnullvm" 1330 | version = "0.52.6" 1331 | source = "registry+https://github.com/rust-lang/crates.io-index" 1332 | checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66" 1333 | 1334 | [[package]] 1335 | name = "windows_i686_gnullvm" 1336 | version = "0.53.0" 1337 | source = "registry+https://github.com/rust-lang/crates.io-index" 1338 | checksum = "9ce6ccbdedbf6d6354471319e781c0dfef054c81fbc7cf83f338a4296c0cae11" 1339 | 1340 | [[package]] 1341 | name = "windows_i686_msvc" 1342 | version = "0.52.6" 1343 | source = "registry+https://github.com/rust-lang/crates.io-index" 1344 | checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66" 1345 | 1346 | [[package]] 1347 | name = "windows_i686_msvc" 1348 | version = "0.53.0" 1349 | source = "registry+https://github.com/rust-lang/crates.io-index" 1350 | checksum = "581fee95406bb13382d2f65cd4a908ca7b1e4c2f1917f143ba16efe98a589b5d" 1351 | 1352 | [[package]] 1353 | name = "windows_x86_64_gnu" 1354 | version = "0.52.6" 1355 | source = "registry+https://github.com/rust-lang/crates.io-index" 1356 | checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78" 1357 | 1358 | [[package]] 1359 | name = "windows_x86_64_gnu" 1360 | version = "0.53.0" 1361 | source = "registry+https://github.com/rust-lang/crates.io-index" 1362 | checksum = "2e55b5ac9ea33f2fc1716d1742db15574fd6fc8dadc51caab1c16a3d3b4190ba" 1363 | 1364 | [[package]] 1365 | name = "windows_x86_64_gnullvm" 1366 | version = "0.52.6" 1367 | source = "registry+https://github.com/rust-lang/crates.io-index" 1368 | checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d" 1369 | 1370 | [[package]] 1371 | name = "windows_x86_64_gnullvm" 1372 | version = "0.53.0" 1373 | source = "registry+https://github.com/rust-lang/crates.io-index" 1374 | checksum = "0a6e035dd0599267ce1ee132e51c27dd29437f63325753051e71dd9e42406c57" 1375 | 1376 | [[package]] 1377 | name = "windows_x86_64_msvc" 1378 | version = "0.52.6" 1379 | source = "registry+https://github.com/rust-lang/crates.io-index" 1380 | checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" 1381 | 1382 | [[package]] 1383 | name = "windows_x86_64_msvc" 1384 | version = "0.53.0" 1385 | source = "registry+https://github.com/rust-lang/crates.io-index" 1386 | checksum = "271414315aff87387382ec3d271b52d7ae78726f5d44ac98b4f4030c91880486" 1387 | 1388 | [[package]] 1389 | name = "winnow" 1390 | version = "0.7.13" 1391 | source = "registry+https://github.com/rust-lang/crates.io-index" 1392 | checksum = "21a0236b59786fed61e2a80582dd500fe61f18b5dca67a4a067d0bc9039339cf" 1393 | dependencies = [ 1394 | "memchr", 1395 | ] 1396 | 1397 | [[package]] 1398 | name = "wit-bindgen" 1399 | version = "0.45.1" 1400 | source = "registry+https://github.com/rust-lang/crates.io-index" 1401 | checksum = "5c573471f125075647d03df72e026074b7203790d41351cd6edc96f46bcccd36" 1402 | 1403 | [[package]] 1404 | name = "writeable" 1405 | version = "0.6.1" 1406 | source = "registry+https://github.com/rust-lang/crates.io-index" 1407 | checksum = "ea2f10b9bb0928dfb1b42b65e1f9e36f7f54dbdf08457afefb38afcdec4fa2bb" 1408 | 1409 | [[package]] 1410 | name = "xdg-desktop-portal-shana" 1411 | version = "0.3.16" 1412 | dependencies = [ 1413 | "futures", 1414 | "notify", 1415 | "serde", 1416 | "serde_repr", 1417 | "tokio", 1418 | "toml", 1419 | "tracing", 1420 | "tracing-subscriber", 1421 | "url", 1422 | "zbus", 1423 | ] 1424 | 1425 | [[package]] 1426 | name = "yoke" 1427 | version = "0.8.0" 1428 | source = "registry+https://github.com/rust-lang/crates.io-index" 1429 | checksum = "5f41bb01b8226ef4bfd589436a297c53d118f65921786300e427be8d487695cc" 1430 | dependencies = [ 1431 | "serde", 1432 | "stable_deref_trait", 1433 | "yoke-derive", 1434 | "zerofrom", 1435 | ] 1436 | 1437 | [[package]] 1438 | name = "yoke-derive" 1439 | version = "0.8.0" 1440 | source = "registry+https://github.com/rust-lang/crates.io-index" 1441 | checksum = "38da3c9736e16c5d3c8c597a9aaa5d1fa565d0532ae05e27c24aa62fb32c0ab6" 1442 | dependencies = [ 1443 | "proc-macro2", 1444 | "quote", 1445 | "syn", 1446 | "synstructure", 1447 | ] 1448 | 1449 | [[package]] 1450 | name = "zbus" 1451 | version = "5.12.0" 1452 | source = "registry+https://github.com/rust-lang/crates.io-index" 1453 | checksum = "b622b18155f7a93d1cd2dc8c01d2d6a44e08fb9ebb7b3f9e6ed101488bad6c91" 1454 | dependencies = [ 1455 | "async-broadcast", 1456 | "async-recursion", 1457 | "async-trait", 1458 | "enumflags2", 1459 | "event-listener", 1460 | "futures-core", 1461 | "futures-lite", 1462 | "hex", 1463 | "nix", 1464 | "ordered-stream", 1465 | "serde", 1466 | "serde_repr", 1467 | "tokio", 1468 | "tracing", 1469 | "uds_windows", 1470 | "uuid", 1471 | "windows-sys 0.61.0", 1472 | "winnow", 1473 | "zbus_macros", 1474 | "zbus_names", 1475 | "zvariant", 1476 | ] 1477 | 1478 | [[package]] 1479 | name = "zbus_macros" 1480 | version = "5.12.0" 1481 | source = "registry+https://github.com/rust-lang/crates.io-index" 1482 | checksum = "1cdb94821ca8a87ca9c298b5d1cbd80e2a8b67115d99f6e4551ac49e42b6a314" 1483 | dependencies = [ 1484 | "proc-macro-crate", 1485 | "proc-macro2", 1486 | "quote", 1487 | "syn", 1488 | "zbus_names", 1489 | "zvariant", 1490 | "zvariant_utils", 1491 | ] 1492 | 1493 | [[package]] 1494 | name = "zbus_names" 1495 | version = "4.2.0" 1496 | source = "registry+https://github.com/rust-lang/crates.io-index" 1497 | checksum = "7be68e64bf6ce8db94f63e72f0c7eb9a60d733f7e0499e628dfab0f84d6bcb97" 1498 | dependencies = [ 1499 | "serde", 1500 | "static_assertions", 1501 | "winnow", 1502 | "zvariant", 1503 | ] 1504 | 1505 | [[package]] 1506 | name = "zerofrom" 1507 | version = "0.1.6" 1508 | source = "registry+https://github.com/rust-lang/crates.io-index" 1509 | checksum = "50cc42e0333e05660c3587f3bf9d0478688e15d870fab3346451ce7f8c9fbea5" 1510 | dependencies = [ 1511 | "zerofrom-derive", 1512 | ] 1513 | 1514 | [[package]] 1515 | name = "zerofrom-derive" 1516 | version = "0.1.6" 1517 | source = "registry+https://github.com/rust-lang/crates.io-index" 1518 | checksum = "d71e5d6e06ab090c67b5e44993ec16b72dcbaabc526db883a360057678b48502" 1519 | dependencies = [ 1520 | "proc-macro2", 1521 | "quote", 1522 | "syn", 1523 | "synstructure", 1524 | ] 1525 | 1526 | [[package]] 1527 | name = "zerotrie" 1528 | version = "0.2.2" 1529 | source = "registry+https://github.com/rust-lang/crates.io-index" 1530 | checksum = "36f0bbd478583f79edad978b407914f61b2972f5af6fa089686016be8f9af595" 1531 | dependencies = [ 1532 | "displaydoc", 1533 | "yoke", 1534 | "zerofrom", 1535 | ] 1536 | 1537 | [[package]] 1538 | name = "zerovec" 1539 | version = "0.11.4" 1540 | source = "registry+https://github.com/rust-lang/crates.io-index" 1541 | checksum = "e7aa2bd55086f1ab526693ecbe444205da57e25f4489879da80635a46d90e73b" 1542 | dependencies = [ 1543 | "yoke", 1544 | "zerofrom", 1545 | "zerovec-derive", 1546 | ] 1547 | 1548 | [[package]] 1549 | name = "zerovec-derive" 1550 | version = "0.11.1" 1551 | source = "registry+https://github.com/rust-lang/crates.io-index" 1552 | checksum = "5b96237efa0c878c64bd89c436f661be4e46b2f3eff1ebb976f7ef2321d2f58f" 1553 | dependencies = [ 1554 | "proc-macro2", 1555 | "quote", 1556 | "syn", 1557 | ] 1558 | 1559 | [[package]] 1560 | name = "zvariant" 1561 | version = "5.7.0" 1562 | source = "registry+https://github.com/rust-lang/crates.io-index" 1563 | checksum = "999dd3be73c52b1fccd109a4a81e4fcd20fab1d3599c8121b38d04e1419498db" 1564 | dependencies = [ 1565 | "endi", 1566 | "enumflags2", 1567 | "serde", 1568 | "url", 1569 | "winnow", 1570 | "zvariant_derive", 1571 | "zvariant_utils", 1572 | ] 1573 | 1574 | [[package]] 1575 | name = "zvariant_derive" 1576 | version = "5.7.0" 1577 | source = "registry+https://github.com/rust-lang/crates.io-index" 1578 | checksum = "6643fd0b26a46d226bd90d3f07c1b5321fe9bb7f04673cb37ac6d6883885b68e" 1579 | dependencies = [ 1580 | "proc-macro-crate", 1581 | "proc-macro2", 1582 | "quote", 1583 | "syn", 1584 | "zvariant_utils", 1585 | ] 1586 | 1587 | [[package]] 1588 | name = "zvariant_utils" 1589 | version = "3.2.1" 1590 | source = "registry+https://github.com/rust-lang/crates.io-index" 1591 | checksum = "c6949d142f89f6916deca2232cf26a8afacf2b9fdc35ce766105e104478be599" 1592 | dependencies = [ 1593 | "proc-macro2", 1594 | "quote", 1595 | "serde", 1596 | "syn", 1597 | "winnow", 1598 | ] 1599 | --------------------------------------------------------------------------------