From cad239064973146916368cf3959b93ec1c9edd7b Mon Sep 17 00:00:00 2001 From: Florian Briand Date: Mon, 23 Sep 2024 12:18:17 +0200 Subject: [PATCH] feat: replace desktop by a fresh Tauri install, and add a new frontend module using Nuxt --- Cargo.lock | 2157 ++++------------------ Cargo.toml | 1 - README.md | 48 +- crates/desktop/Cargo.toml | 15 +- crates/desktop/capabilities/default.json | 10 + crates/desktop/src/lib.rs | 86 +- crates/desktop/tauri.conf.json | 26 +- frontend/.gitignore | 24 + frontend/README.md | 77 + frontend/app.vue | 6 + frontend/bun.lockb | Bin 0 -> 281048 bytes frontend/nuxt.config.ts | 29 + frontend/package.json | 17 + frontend/public/favicon.ico | Bin 0 -> 4286 bytes frontend/public/robots.txt | 1 + frontend/server/tsconfig.json | 3 + frontend/tsconfig.json | 4 + 17 files changed, 555 insertions(+), 1949 deletions(-) create mode 100644 crates/desktop/capabilities/default.json create mode 100644 frontend/.gitignore create mode 100644 frontend/README.md create mode 100644 frontend/app.vue create mode 100755 frontend/bun.lockb create mode 100644 frontend/nuxt.config.ts create mode 100644 frontend/package.json create mode 100644 frontend/public/favicon.ico create mode 100644 frontend/public/robots.txt create mode 100644 frontend/server/tsconfig.json create mode 100644 frontend/tsconfig.json diff --git a/Cargo.lock b/Cargo.lock index f729483..2be0a25 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -17,15 +17,6 @@ version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe" -[[package]] -name = "aho-corasick" -version = "0.7.20" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cc936419f96fa211c1b9166887b38e5e40b19958e5b895be7c1f93adec7071ac" -dependencies = [ - "memchr", -] - [[package]] name = "aho-corasick" version = "1.1.3" @@ -65,239 +56,12 @@ dependencies = [ "libc", ] -[[package]] -name = "ansi_term" -version = "0.12.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d52a9bb7ec0cf484c551830a7ce27bd20d67eac647e1befb56b0be4ee39a55d2" -dependencies = [ - "winapi 0.3.9", -] - [[package]] name = "anyhow" version = "1.0.86" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b3d1d046238990b9cf5bcde22a3fb3584ee5cf65fb2765f454ed428c7a0063da" -[[package]] -name = "app" -version = "0.1.0" -dependencies = [ - "askama", - "askama_axum", - "axum", - "axum-htmx", - "cargo-watch", - "listenfd", - "notify 6.1.1", - "serde", - "systemfd", - "thiserror", - "tokio", - "tower-http", - "tower-livereload", -] - -[[package]] -name = "askama" -version = "0.12.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b79091df18a97caea757e28cd2d5fda49c6cd4bd01ddffd7ff01ace0c0ad2c28" -dependencies = [ - "askama_derive", - "askama_escape", - "humansize", - "num-traits", - "percent-encoding", -] - -[[package]] -name = "askama_axum" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a41603f7cdbf5ac4af60760f17253eb6adf6ec5b6f14a7ed830cf687d375f163" -dependencies = [ - "askama", - "axum-core", - "http", -] - -[[package]] -name = "askama_derive" -version = "0.12.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "19fe8d6cb13c4714962c072ea496f3392015f0989b1a2847bb4b2d9effd71d83" -dependencies = [ - "askama_parser", - "basic-toml", - "mime", - "mime_guess", - "proc-macro2", - "quote", - "serde", - "syn 2.0.72", -] - -[[package]] -name = "askama_escape" -version = "0.10.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "619743e34b5ba4e9703bba34deac3427c72507c7159f5fd030aea8cac0cfe341" - -[[package]] -name = "askama_parser" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "acb1161c6b64d1c3d83108213c2a2533a342ac225aabd0bda218278c2ddb00c0" -dependencies = [ - "nom 7.1.3", -] - -[[package]] -name = "async-broadcast" -version = "0.7.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "20cd0e2e25ea8e5f7e9df04578dc6cf5c83577fd09b1a46aaf5c85e1c33f2a7e" -dependencies = [ - "event-listener", - "event-listener-strategy", - "futures-core", - "pin-project-lite", -] - -[[package]] -name = "async-channel" -version = "2.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "89b47800b0be77592da0afd425cc03468052844aff33b84e33cc696f64e77b6a" -dependencies = [ - "concurrent-queue", - "event-listener-strategy", - "futures-core", - "pin-project-lite", -] - -[[package]] -name = "async-executor" -version = "1.13.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d7ebdfa2ebdab6b1760375fa7d6f382b9f486eac35fc994625a00e89280bdbb7" -dependencies = [ - "async-task", - "concurrent-queue", - "fastrand", - "futures-lite", - "slab", -] - -[[package]] -name = "async-fs" -version = "2.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ebcd09b382f40fcd159c2d695175b2ae620ffa5f3bd6f664131efff4e8b9e04a" -dependencies = [ - "async-lock", - "blocking", - "futures-lite", -] - -[[package]] -name = "async-io" -version = "2.3.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0d6baa8f0178795da0e71bc42c9e5d13261aac7ee549853162e66a241ba17964" -dependencies = [ - "async-lock", - "cfg-if 1.0.0", - "concurrent-queue", - "futures-io", - "futures-lite", - "parking", - "polling", - "rustix", - "slab", - "tracing", - "windows-sys 0.52.0", -] - -[[package]] -name = "async-lock" -version = "3.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ff6e472cdea888a4bd64f342f09b3f50e1886d32afe8df3d663c01140b811b18" -dependencies = [ - "event-listener", - "event-listener-strategy", - "pin-project-lite", -] - -[[package]] -name = "async-process" -version = "2.2.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f7eda79bbd84e29c2b308d1dc099d7de8dcc7035e48f4bf5dc4a531a44ff5e2a" -dependencies = [ - "async-channel", - "async-io", - "async-lock", - "async-signal", - "async-task", - "blocking", - "cfg-if 1.0.0", - "event-listener", - "futures-lite", - "rustix", - "tracing", - "windows-sys 0.52.0", -] - -[[package]] -name = "async-recursion" -version = "1.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3b43422f69d8ff38f95f1b2bb76517c91589a924d1559a0e935d7c8ce0274c11" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.72", -] - -[[package]] -name = "async-signal" -version = "0.2.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dfb3634b73397aa844481f814fad23bbf07fdb0eabec10f2eb95e58944b1ec32" -dependencies = [ - "async-io", - "async-lock", - "atomic-waker", - "cfg-if 1.0.0", - "futures-core", - "futures-io", - "rustix", - "signal-hook-registry", - "slab", - "windows-sys 0.52.0", -] - -[[package]] -name = "async-task" -version = "4.7.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8b75356056920673b02621b35afd0f7dda9306d03c79a30f5c56c44cf256e3de" - -[[package]] -name = "async-trait" -version = "0.1.81" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6e0c28dcc82d7c8ead5cb13beb15405b57b8546e93215673ff8ca0349a028107" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.72", -] - [[package]] name = "atk" version = "0.18.0" @@ -321,98 +85,12 @@ dependencies = [ "system-deps", ] -[[package]] -name = "atomic-waker" -version = "1.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1505bd5d3d116872e7271a6d4e16d81d0c8570876c8de68093a09ac269d8aac0" - -[[package]] -name = "atty" -version = "0.2.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d9b39be18770d11421cdb1b9947a45dd3f37e93092cbf377614828a319d5fee8" -dependencies = [ - "hermit-abi 0.1.19", - "libc", - "winapi 0.3.9", -] - [[package]] name = "autocfg" version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0c4b4d0bd25bd0b74681c0ad21497610ce1b7c91b1022cd21c80c6fbdd9476b0" -[[package]] -name = "axum" -version = "0.7.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3a6c9af12842a67734c9a2e355436e5d03b22383ed60cf13cd0c18fbfe3dcbcf" -dependencies = [ - "async-trait", - "axum-core", - "bytes", - "futures-util", - "http", - "http-body", - "http-body-util", - "hyper", - "hyper-util", - "itoa 1.0.11", - "matchit", - "memchr", - "mime", - "percent-encoding", - "pin-project-lite", - "rustversion", - "serde", - "serde_json", - "serde_path_to_error", - "serde_urlencoded", - "sync_wrapper 1.0.1", - "tokio", - "tower", - "tower-layer", - "tower-service", - "tracing", -] - -[[package]] -name = "axum-core" -version = "0.4.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a15c63fd72d41492dc4f497196f5da1fb04fb7529e631d73630d1b491e47a2e3" -dependencies = [ - "async-trait", - "bytes", - "futures-util", - "http", - "http-body", - "http-body-util", - "mime", - "pin-project-lite", - "rustversion", - "sync_wrapper 0.1.2", - "tower-layer", - "tower-service", - "tracing", -] - -[[package]] -name = "axum-htmx" -version = "0.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "36cdb6062317f732ed3acf4e9c28c3824092e226726616f46ebdd8cd32c82a41" -dependencies = [ - "async-trait", - "axum-core", - "futures", - "http", - "tokio", - "tower", -] - [[package]] name = "backtrace" version = "0.3.73" @@ -421,7 +99,7 @@ checksum = "5cc23269a4f8976d0a4d2e7109211a419fe30e8d88d677cd60b6bc79c5732e0a" dependencies = [ "addr2line", "cc", - "cfg-if 1.0.0", + "cfg-if", "libc", "miniz_oxide", "object", @@ -440,15 +118,6 @@ version = "0.22.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6" -[[package]] -name = "basic-toml" -version = "0.1.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "823388e228f614e9558c6804262db37960ec8821856535f5c3f59913140558f8" -dependencies = [ - "serde", -] - [[package]] name = "bitflags" version = "1.3.2" @@ -488,24 +157,11 @@ dependencies = [ "objc2", ] -[[package]] -name = "blocking" -version = "1.6.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "703f41c54fc768e63e091340b424302bb1c29ef4aa0c7f10fe849dfb114d29ea" -dependencies = [ - "async-channel", - "async-task", - "futures-io", - "futures-lite", - "piper", -] - [[package]] name = "brotli" -version = "3.5.0" +version = "6.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d640d25bc63c50fb1f0b545ffd80207d2e10a4c965530809b40ba3386825c391" +checksum = "74f7971dbd9326d58187408ab83117d8ac1bb9c17b085fdacd1cf2f598719b6b" dependencies = [ "alloc-no-stdlib", "alloc-stdlib", @@ -514,23 +170,14 @@ dependencies = [ [[package]] name = "brotli-decompressor" -version = "2.5.1" +version = "4.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4e2e4afe60d7dd600fdd3de8d0f08c2b7ec039712e3b6137ff98b7004e82de4f" +checksum = "9a45bd2e4095a8b518033b128020dd4a55aab1c0a381ba4404a472630f4bc362" dependencies = [ "alloc-no-stdlib", "alloc-stdlib", ] -[[package]] -name = "bstr" -version = "0.2.17" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ba3569f383e8f1598449f1a423e72e99569137b47740b1da11ef19af3d5c3223" -dependencies = [ - "memchr", -] - [[package]] name = "bumpalo" version = "3.16.0" @@ -601,37 +248,6 @@ dependencies = [ "serde", ] -[[package]] -name = "cargo-watch" -version = "8.5.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b9567d1518a2ec25bb3cce963f8a3fd4b86b5bbdb210f415f461cfb8c4e2aa2" -dependencies = [ - "camino", - "cargo_metadata 0.17.0", - "clap", - "dotenvy", - "log", - "notify-rust", - "shell-escape", - "stderrlog", - "watchexec", -] - -[[package]] -name = "cargo_metadata" -version = "0.17.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e7daec1a2a2129eeba1644b220b4647ec537b0b5d4bfd6876fcc5a540056b592" -dependencies = [ - "camino", - "cargo-platform", - "semver", - "serde", - "serde_json", - "thiserror", -] - [[package]] name = "cargo_metadata" version = "0.18.1" @@ -676,7 +292,7 @@ checksum = "d38f2da7a0a2c4ccf0065be06397cc26a81f4e528be095826eee9d4adbb8c60f" dependencies = [ "byteorder", "fnv", - "uuid 1.10.0", + "uuid", ] [[package]] @@ -689,12 +305,6 @@ dependencies = [ "target-lexicon", ] -[[package]] -name = "cfg-if" -version = "0.1.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4785bdd1c96b2a846b2bd7cc02e86b6b3dbf14e7e53446c4f54c92a361040822" - [[package]] name = "cfg-if" version = "1.0.0" @@ -715,41 +325,11 @@ checksum = "a21f936df1771bf62b77f047b726c4625ff2e8aa607c01ec06e5a05bd8463401" dependencies = [ "android-tzdata", "iana-time-zone", - "js-sys", "num-traits", "serde", - "wasm-bindgen", "windows-targets 0.52.6", ] -[[package]] -name = "clap" -version = "2.34.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a0610544180c38b88101fecf2dd634b174a62eef6946f84dfc6a7127512b381c" -dependencies = [ - "ansi_term", - "atty", - "bitflags 1.3.2", - "strsim 0.8.0", - "textwrap", - "unicode-width", - "vec_map", -] - -[[package]] -name = "clearscreen" -version = "1.0.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e55dadbdd203f69c0a107bc78fca6e47d605345610ee77dcf24203fdf510b317" -dependencies = [ - "nix 0.24.3", - "terminfo", - "thiserror", - "which", - "winapi 0.3.9", -] - [[package]] name = "cocoa" version = "0.25.0" @@ -758,9 +338,25 @@ checksum = "f6140449f97a6e97f9511815c5632d84c8aacf8ac271ad77c559218161a1373c" dependencies = [ "bitflags 1.3.2", "block", - "cocoa-foundation", - "core-foundation", - "core-graphics", + "cocoa-foundation 0.1.2", + "core-foundation 0.9.4", + "core-graphics 0.23.2", + "foreign-types", + "libc", + "objc", +] + +[[package]] +name = "cocoa" +version = "0.26.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f79398230a6e2c08f5c9760610eb6924b52aa9e7950a619602baba59dcbbdbb2" +dependencies = [ + "bitflags 2.6.0", + "block", + "cocoa-foundation 0.2.0", + "core-foundation 0.10.0", + "core-graphics 0.24.0", "foreign-types", "libc", "objc", @@ -774,8 +370,22 @@ checksum = "8c6234cbb2e4c785b456c0644748b1ac416dd045799740356f8363dfe00c93f7" dependencies = [ "bitflags 1.3.2", "block", - "core-foundation", - "core-graphics-types", + "core-foundation 0.9.4", + "core-graphics-types 0.1.3", + "libc", + "objc", +] + +[[package]] +name = "cocoa-foundation" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e14045fb83be07b5acf1c0884b2180461635b433455fa35d1cd6f17f1450679d" +dependencies = [ + "bitflags 2.6.0", + "block", + "core-foundation 0.10.0", + "core-graphics-types 0.2.0", "libc", "objc", ] @@ -790,38 +400,6 @@ dependencies = [ "memchr", ] -[[package]] -name = "command-group" -version = "1.0.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f7a8a86f409b4a59df3a3e4bee2de0b83f1755fdd2a25e3a9684c396fc4bed2c" -dependencies = [ - "nix 0.22.3", - "winapi 0.3.9", -] - -[[package]] -name = "concurrent-queue" -version = "2.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ca0197aee26d1ae37445ee532fefce43251d24cc7c166799f4d46817f1d3973" -dependencies = [ - "crossbeam-utils", -] - -[[package]] -name = "console" -version = "0.15.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0e1f83fc076bd6dd27517eacdf25fef6c4dfe5f1d7448bafaaf3a26f13b5e4eb" -dependencies = [ - "encode_unicode", - "lazy_static", - "libc", - "unicode-width", - "windows-sys 0.52.0", -] - [[package]] name = "convert_case" version = "0.4.0" @@ -839,10 +417,20 @@ dependencies = [ ] [[package]] -name = "core-foundation-sys" -version = "0.8.6" +name = "core-foundation" +version = "0.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "06ea2b9bc92be3c2baa9334a323ebca2d6f074ff852cd1d7b11064035cd3868f" +checksum = "b55271e5c8c478ad3f38ad24ef34923091e0548492a266d19b3c0b4d82574c63" +dependencies = [ + "core-foundation-sys", + "libc", +] + +[[package]] +name = "core-foundation-sys" +version = "0.8.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b" [[package]] name = "core-graphics" @@ -851,8 +439,21 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c07782be35f9e1140080c6b96f0d44b739e2278479f64e02fdab4e32dfd8b081" dependencies = [ "bitflags 1.3.2", - "core-foundation", - "core-graphics-types", + "core-foundation 0.9.4", + "core-graphics-types 0.1.3", + "foreign-types", + "libc", +] + +[[package]] +name = "core-graphics" +version = "0.24.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fa95a34622365fa5bbf40b20b75dba8dfa8c94c734aea8ac9a5ca38af14316f1" +dependencies = [ + "bitflags 2.6.0", + "core-foundation 0.10.0", + "core-graphics-types 0.2.0", "foreign-types", "libc", ] @@ -864,7 +465,18 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "45390e6114f68f718cc7a830514a96f903cccd70d02a8f6d9f643ac4ba45afaf" dependencies = [ "bitflags 1.3.2", - "core-foundation", + "core-foundation 0.9.4", + "libc", +] + +[[package]] +name = "core-graphics-types" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3d44a101f213f6c4cdc1853d4b78aef6db6bdfa3468798cc1d9912f4735013eb" +dependencies = [ + "bitflags 2.6.0", + "core-foundation 0.10.0", "libc", ] @@ -883,7 +495,7 @@ version = "1.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a97769d94ddab943e4510d138150169a2758b5ef3eb191a9ee688de3e23ef7b3" dependencies = [ - "cfg-if 1.0.0", + "cfg-if", ] [[package]] @@ -948,38 +560,14 @@ dependencies = [ "syn 2.0.72", ] -[[package]] -name = "darling" -version = "0.12.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f2c43f534ea4b0b049015d00269734195e6d3f0f6635cb692251aca6f9f8b3c" -dependencies = [ - "darling_core 0.12.4", - "darling_macro 0.12.4", -] - [[package]] name = "darling" version = "0.20.10" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6f63b86c8a8826a49b8c21f08a2d07338eec8d900540f8630dc76284be802989" dependencies = [ - "darling_core 0.20.10", - "darling_macro 0.20.10", -] - -[[package]] -name = "darling_core" -version = "0.12.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e91455b86830a1c21799d94524df0845183fa55bafd9aa137b01c7d1065fa36" -dependencies = [ - "fnv", - "ident_case", - "proc-macro2", - "quote", - "strsim 0.10.0", - "syn 1.0.109", + "darling_core", + "darling_macro", ] [[package]] @@ -992,28 +580,17 @@ dependencies = [ "ident_case", "proc-macro2", "quote", - "strsim 0.11.1", + "strsim", "syn 2.0.72", ] -[[package]] -name = "darling_macro" -version = "0.12.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "29b5acf0dea37a7f66f7b25d2c5e93fd46f8f6968b1a5d7a3e02e97768afc95a" -dependencies = [ - "darling_core 0.12.4", - "quote", - "syn 1.0.109", -] - [[package]] name = "darling_macro" version = "0.20.10" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d336a2a514f6ccccaa3e09b02d41d35330c07ddf03a62165fcec10bb561c7806" dependencies = [ - "darling_core 0.20.10", + "darling_core", "quote", "syn 2.0.72", ] @@ -1028,37 +605,6 @@ dependencies = [ "serde", ] -[[package]] -name = "derive_builder" -version = "0.10.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d13202debe11181040ae9063d739fa32cfcaaebe2275fe387703460ae2365b30" -dependencies = [ - "derive_builder_macro", -] - -[[package]] -name = "derive_builder_core" -version = "0.10.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "66e616858f6187ed828df7c64a6d71720d83767a7f19740b2d1b6fe6327b36e5" -dependencies = [ - "darling 0.12.4", - "proc-macro2", - "quote", - "syn 1.0.109", -] - -[[package]] -name = "derive_builder_macro" -version = "0.10.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "58a94ace95092c5acb1e97a7e846b310cfbd499652f72297da7493f618a98d73" -dependencies = [ - "derive_builder_core", - "syn 1.0.109", -] - [[package]] name = "derive_more" version = "0.99.18" @@ -1076,15 +622,11 @@ dependencies = [ name = "desktop" version = "0.1.0" dependencies = [ - "app", - "axum", - "bytes", - "http", + "serde", + "serde_json", "tauri", "tauri-build", - "thiserror", - "tokio", - "tower", + "tauri-plugin-shell", ] [[package]] @@ -1103,16 +645,7 @@ version = "5.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9a49173b84e034382284f27f1af4dcbbd231ffa358c0fe316541a7337f376a35" dependencies = [ - "dirs-sys 0.4.1", -] - -[[package]] -name = "dirs" -version = "4.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ca3aa72a6f96ea37bbc5aa912f6788242832f75369bdfdadcb0e38423f100059" -dependencies = [ - "dirs-sys 0.3.7", + "dirs-sys", ] [[package]] @@ -1121,28 +654,7 @@ version = "5.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "44c45a9d03d6676652bcb5e724c7e988de1acad23a711b5217ab9cbecbec2225" dependencies = [ - "dirs-sys 0.4.1", -] - -[[package]] -name = "dirs-next" -version = "2.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b98cf8ebf19c3d1b223e151f99a4f9f0690dca41414773390fc824184ac833e1" -dependencies = [ - "cfg-if 1.0.0", - "dirs-sys-next", -] - -[[package]] -name = "dirs-sys" -version = "0.3.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1b1d1d91c932ef41c0f2663aa8b0ca0342d444d842c06914aa0a7e352d0bada6" -dependencies = [ - "libc", - "redox_users", - "winapi 0.3.9", + "dirs-sys", ] [[package]] @@ -1157,17 +669,6 @@ dependencies = [ "windows-sys 0.48.0", ] -[[package]] -name = "dirs-sys-next" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ebda144c4fe02d1f7ea1a7d9641b6fc6b580adcfa024ae48797ecdeb6825b4d" -dependencies = [ - "libc", - "redox_users", - "winapi 0.3.9", -] - [[package]] name = "dispatch" version = "0.2.0" @@ -1183,7 +684,7 @@ dependencies = [ "dlopen2_derive", "libc", "once_cell", - "winapi 0.3.9", + "winapi", ] [[package]] @@ -1203,12 +704,6 @@ version = "0.15.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "77c90badedccf4105eca100756a0b1289e191f6fcbdadd3cee1d2f614f97da8f" -[[package]] -name = "dotenvy" -version = "0.15.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1aaf95b3e5c8f23aa320147307562d361db0ae0d51242340f558153b4eb2439b" - [[package]] name = "dpi" version = "0.1.1" @@ -1245,12 +740,6 @@ version = "1.0.17" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0d6ef0072f8a535281e4876be788938b528e9a1d43900b82c2569af7da799125" -[[package]] -name = "either" -version = "1.13.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "60b1af1c220855b6ceac025d3f6ecdd2b7c4894bfe9cd9bda4fbb4bc7c0d4cf0" - [[package]] name = "embed-resource" version = "2.4.3" @@ -1272,36 +761,12 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4ef6b89e5b37196644d8796de5268852ff179b44e96276cf4290264843743bb7" [[package]] -name = "encode_unicode" -version = "0.3.6" +name = "encoding_rs" +version = "0.8.34" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a357d28ed41a50f9c765dbfe56cbc04a64e53e5fc58ba79fbc34c10ef3df831f" - -[[package]] -name = "endi" -version = "1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a3d8a32ae18130a3c84dd492d4215c3d913c3b07c6b63c2eb3eb7ff1101ab7bf" - -[[package]] -name = "enumflags2" -version = "0.7.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d232db7f5956f3f14313dc2f87985c58bd2c695ce124c8cdd984e08e15ac133d" +checksum = "b45de904aa0b010bce2ab45264d0631681847fa7b6f2eaa7dab7619943bc4f59" dependencies = [ - "enumflags2_derive", - "serde", -] - -[[package]] -name = "enumflags2_derive" -version = "0.7.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "de0d48a183585823424a4ce1aa132d174a6a81bd540895822eb4c8373a8e49e8" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.72", + "cfg-if", ] [[package]] @@ -1320,43 +785,6 @@ dependencies = [ "typeid", ] -[[package]] -name = "errno" -version = "0.3.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "534c5cf6194dfab3db3242765c03bbe257cf92f22b38f6bc0c58d59108a820ba" -dependencies = [ - "libc", - "windows-sys 0.52.0", -] - -[[package]] -name = "event-listener" -version = "5.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6032be9bd27023a771701cc49f9f053c751055f71efb2e0ae5c15809093675ba" -dependencies = [ - "concurrent-queue", - "parking", - "pin-project-lite", -] - -[[package]] -name = "event-listener-strategy" -version = "0.5.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0f214dc438f977e6d4e3500aaa277f5ad94ca83fbbd9b1a15713ce2344ccc5a1" -dependencies = [ - "event-listener", - "pin-project-lite", -] - -[[package]] -name = "fastrand" -version = "2.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9fc0510504f03c51ada170672ac806f1f105a88aa97a5281117e1ddc3368e51a" - [[package]] name = "fdeflate" version = "0.3.4" @@ -1372,22 +800,10 @@ version = "0.3.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "38e2275cc4e4fc009b0669731a1e5ab7ebf11f469eaede2bab9309a5b4d6057f" dependencies = [ - "memoffset 0.9.1", + "memoffset", "rustc_version", ] -[[package]] -name = "filetime" -version = "0.2.23" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1ee447700ac8aa0b2f2bd7bc4462ad686ba06baa6727ac149a2d6277f0d240fd" -dependencies = [ - "cfg-if 1.0.0", - "libc", - "redox_syscall 0.4.1", - "windows-sys 0.52.0", -] - [[package]] name = "flate2" version = "1.0.30" @@ -1398,6 +814,15 @@ dependencies = [ "miniz_oxide", ] +[[package]] +name = "fluent-uri" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "17c704e9dbe1ddd863da1e6ff3567795087b1eb201ce80d8fa81162e1516500d" +dependencies = [ + "bitflags 1.3.2", +] + [[package]] name = "fnv" version = "1.0.7" @@ -1440,50 +865,6 @@ dependencies = [ "percent-encoding", ] -[[package]] -name = "fsevent" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5ab7d1bd1bd33cc98b0889831b72da23c0aa4df9cec7e0702f46ecea04b35db6" -dependencies = [ - "bitflags 1.3.2", - "fsevent-sys 2.0.1", -] - -[[package]] -name = "fsevent-sys" -version = "2.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f41b048a94555da0f42f1d632e2e19510084fb8e303b0daa2816e733fb3644a0" -dependencies = [ - "libc", -] - -[[package]] -name = "fsevent-sys" -version = "4.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "76ee7a02da4d231650c7cea31349b889be2f45ddb3ef3032d2ec8185f6313fd2" -dependencies = [ - "libc", -] - -[[package]] -name = "fuchsia-zircon" -version = "0.3.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2e9763c69ebaae630ba35f74888db465e49e259ba1bc0eda7d06f4a067615d82" -dependencies = [ - "bitflags 1.3.2", - "fuchsia-zircon-sys", -] - -[[package]] -name = "fuchsia-zircon-sys" -version = "0.3.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3dcaa9ae7725d12cdb85b3ad99a434db70b468c09ded17e012d86b5c1010f7a7" - [[package]] name = "futf" version = "0.1.5" @@ -1494,20 +875,6 @@ dependencies = [ "new_debug_unreachable", ] -[[package]] -name = "futures" -version = "0.3.30" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "645c6916888f6cb6350d2550b80fb63e734897a8498abe35cfb732b6487804b0" -dependencies = [ - "futures-channel", - "futures-core", - "futures-io", - "futures-sink", - "futures-task", - "futures-util", -] - [[package]] name = "futures-channel" version = "0.3.30" @@ -1515,7 +882,6 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "eac8f7d7865dcb88bd4373ab671c8cf4508703796caa2b1985a9ca867b3fcb78" dependencies = [ "futures-core", - "futures-sink", ] [[package]] @@ -1541,19 +907,6 @@ version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a44623e20b9681a318efdd71c299b6b222ed6f231972bfe2f224ebad6311f0c1" -[[package]] -name = "futures-lite" -version = "2.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "52527eb5074e35e9339c6b4e8d12600c7128b68fb25dcb9fa9dec18f7c25f3a5" -dependencies = [ - "fastrand", - "futures-core", - "futures-io", - "parking", - "pin-project-lite", -] - [[package]] name = "futures-macro" version = "0.3.30" @@ -1731,7 +1084,7 @@ version = "0.1.16" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8fc3cb4d91f53b50155bdcfd23f6a4c39ae1969c2ae85982b135750cccaf5fce" dependencies = [ - "cfg-if 1.0.0", + "cfg-if", "libc", "wasi 0.9.0+wasi-snapshot-preview1", ] @@ -1742,7 +1095,7 @@ version = "0.2.15" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c4567c8db10ae91089c99af84c68c38da3ec2f087c3f82960bcdbf3656b6f4d7" dependencies = [ - "cfg-if 1.0.0", + "cfg-if", "libc", "wasi 0.11.0+wasi-snapshot-preview1", ] @@ -1782,7 +1135,7 @@ dependencies = [ "gobject-sys", "libc", "system-deps", - "winapi 0.3.9", + "winapi", ] [[package]] @@ -1838,19 +1191,6 @@ version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d2fabcfbdc87f4758337ca535fb41a6d701b65693ce38287d856d1674551ec9b" -[[package]] -name = "globset" -version = "0.4.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c152169ef1e421390738366d2f796655fec62621dabbd0fd476f905934061e4a" -dependencies = [ - "aho-corasick 0.7.20", - "bstr", - "fnv", - "log", - "regex", -] - [[package]] name = "gobject-sys" version = "0.18.0" @@ -1938,42 +1278,18 @@ version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea" -[[package]] -name = "hermit-abi" -version = "0.1.19" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "62b467343b94ba476dcb2500d242dadbb39557df889310ac77c5d99100aaac33" -dependencies = [ - "libc", -] - [[package]] name = "hermit-abi" version = "0.3.9" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d231dfb89cfffdbc30e7fc41579ed6066ad03abda9e567ccafae602b97ec5024" -[[package]] -name = "hermit-abi" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fbf6a919d6cf397374f7dfeeea91d974c7c0a7221d0d0f4f20d859d329e53fcc" - [[package]] name = "hex" version = "0.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70" -[[package]] -name = "home" -version = "0.5.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e3d1354bf6b7235cb4a0576c2619fd4ed18183f689b12b006a0ee7329eeff9a5" -dependencies = [ - "windows-sys 0.52.0", -] - [[package]] name = "html5ever" version = "0.26.0" @@ -2022,33 +1338,12 @@ dependencies = [ "pin-project-lite", ] -[[package]] -name = "http-range-header" -version = "0.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "08a397c49fec283e3d6211adbe480be95aae5f304cfb923e9970e08956d5168a" - [[package]] name = "httparse" version = "1.9.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0fcc0b4a115bf80b728eb8ea024ad5bd707b615bfed49e0665b6e0f86fd082d9" -[[package]] -name = "httpdate" -version = "1.0.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "df3b46402a9d5adb4c86a0cf463f42e19994e3ee891101b1841f30a545cb49a9" - -[[package]] -name = "humansize" -version = "2.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6cb51c9a029ddc91b07a787f1d86b53ccfa49b0e86688c946ebe8d3555685dd7" -dependencies = [ - "libm", -] - [[package]] name = "hyper" version = "1.4.1" @@ -2061,7 +1356,6 @@ dependencies = [ "http", "http-body", "httparse", - "httpdate", "itoa 1.0.11", "pin-project-lite", "smallvec", @@ -2082,7 +1376,7 @@ dependencies = [ "http-body", "hyper", "pin-project-lite", - "socket2 0.5.7", + "socket2", "tokio", "tower", "tower-service", @@ -2162,60 +1456,20 @@ dependencies = [ [[package]] name = "infer" -version = "0.15.0" +version = "0.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cb33622da908807a06f9513c19b3c1ad50fab3e4137d82a78107d502075aa199" +checksum = "bc150e5ce2330295b8616ce0e3f53250e53af31759a9dbedad1621ba29151847" dependencies = [ "cfb", ] -[[package]] -name = "inotify" -version = "0.7.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4816c66d2c8ae673df83366c18341538f234a26d65a9ecea5c348b453ac1d02f" -dependencies = [ - "bitflags 1.3.2", - "inotify-sys", - "libc", -] - -[[package]] -name = "inotify" -version = "0.9.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f8069d3ec154eb856955c1c0fbffefbf5f3c40a104ec912d4797314c1801abff" -dependencies = [ - "bitflags 1.3.2", - "inotify-sys", - "libc", -] - -[[package]] -name = "inotify-sys" -version = "0.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e05c02b5e89bff3b946cedeca278abc628fe811e604f027c45a8aa3cf793d0eb" -dependencies = [ - "libc", -] - [[package]] name = "instant" version = "0.1.13" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e0242819d153cba4b4b05a5a8f2a7e9bbf97b6055b2a002b395c96b5ff3c0222" dependencies = [ - "cfg-if 1.0.0", -] - -[[package]] -name = "iovec" -version = "0.1.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b2b3ea6ff95e175473f8ffe6a7eb7c00d054240321b84c57051175fe3c1e075e" -dependencies = [ - "libc", + "cfg-if", ] [[package]] @@ -2224,6 +1478,25 @@ version = "2.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8f518f335dce6725a761382244631d86cf0ccb2863413590b31338feb467f9c3" +[[package]] +name = "is-docker" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "928bae27f42bc99b60d9ac7334e3a21d10ad8f1835a4e12ec3ec0464765ed1b3" +dependencies = [ + "once_cell", +] + +[[package]] +name = "is-wsl" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "173609498df190136aa7dea1a91db051746d339e18476eed5ca40521f02d7aa5" +dependencies = [ + "is-docker", + "once_cell", +] + [[package]] name = "itoa" version = "0.4.8" @@ -2266,7 +1539,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1a87aa2bb7d2af34197c04845522473242e1aa17c12f4935d5856491a7fb8c97" dependencies = [ "cesu8", - "cfg-if 1.0.0", + "cfg-if", "combine", "jni-sys", "log", @@ -2292,23 +1565,25 @@ dependencies = [ [[package]] name = "json-patch" -version = "1.4.0" +version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ec9ad60d674508f3ca8f380a928cfe7b096bc729c4e2dbfe3852bc45da3ab30b" +checksum = "5b1fb8864823fad91877e6caea0baca82e49e8db50f8e5c9f9a453e27d3330fc" dependencies = [ + "jsonptr", "serde", "serde_json", "thiserror", ] [[package]] -name = "kernel32-sys" -version = "0.2.2" +name = "jsonptr" +version = "0.4.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7507624b29483431c0ba2d82aece8ca6cdba9382bff4ddd0f7490560c056098d" +checksum = "1c6e529149475ca0b2820835d3dce8fcc41c6b943ca608d32f35b449255e4627" dependencies = [ - "winapi 0.2.8", - "winapi-build", + "fluent-uri", + "serde", + "serde_json", ] [[package]] @@ -2322,26 +1597,6 @@ dependencies = [ "unicode-segmentation", ] -[[package]] -name = "kqueue" -version = "1.0.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7447f1ca1b7b563588a205fe93dea8df60fd981423a768bc1c0ded35ed147d0c" -dependencies = [ - "kqueue-sys", - "libc", -] - -[[package]] -name = "kqueue-sys" -version = "1.0.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ed9625ffda8729b85e45cf04090035ac368927b8cebc34898e7c120f52e4838b" -dependencies = [ - "bitflags 1.3.2", - "libc", -] - [[package]] name = "kuchikiki" version = "0.8.2" @@ -2361,12 +1616,6 @@ version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" -[[package]] -name = "lazycell" -version = "1.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "830d08ce1d1d941e6b30645f1a0eb5643013d835ce3779a5fc208261dbe10f55" - [[package]] name = "libappindicator" version = "0.9.0" @@ -2403,16 +1652,10 @@ version = "0.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b67380fd3b2fbe7527a606e18729d21c6f3951633d0500574c4dc22d2d638b9f" dependencies = [ - "cfg-if 1.0.0", - "winapi 0.3.9", + "cfg-if", + "winapi", ] -[[package]] -name = "libm" -version = "0.2.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ec2a862134d2a7d32d7983ddcdd1c4923530833c9f2ea1a44fc5fa473989058" - [[package]] name = "libredox" version = "0.1.3" @@ -2423,23 +1666,6 @@ dependencies = [ "libc", ] -[[package]] -name = "linux-raw-sys" -version = "0.4.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "78b3ae25bc7c8c38cec158d1f2757ee79e9b3740fbc7ccf0e59e4b08d793fa89" - -[[package]] -name = "listenfd" -version = "1.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e0500463acd96259d219abb05dc57e5a076ef04b2db9a2112846929b5f174c96" -dependencies = [ - "libc", - "uuid 1.10.0", - "winapi 0.3.9", -] - [[package]] name = "lock_api" version = "0.4.12" @@ -2462,7 +1688,7 @@ version = "0.5.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ff50ecb28bb86013e935fb6683ab1f6d3a20016f123c76fd4c27470076ac30f5" dependencies = [ - "cfg-if 1.0.0", + "cfg-if", "generator", "scoped-tls", "serde", @@ -2477,19 +1703,6 @@ version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c41e0c4fef86961ac6d6f8a82609f55f31b05e4fce149ac5710e439df7619ba4" -[[package]] -name = "mac-notification-sys" -version = "0.6.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "51fca4d74ff9dbaac16a01b924bc3693fa2bba0862c2c633abc73f9a8ea21f64" -dependencies = [ - "cc", - "dirs-next", - "objc-foundation", - "objc_id", - "time", -] - [[package]] name = "malloc_buf" version = "0.0.6" @@ -2528,27 +1741,12 @@ version = "0.1.10" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2532096657941c2fea9c289d370a250971c689d4f143798ff67113ec042024a5" -[[package]] -name = "matchit" -version = "0.7.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0e7465ac9959cc2b1404e8e2367b43684a6d13790fe23056cc8c6c5a6b7bcb94" - [[package]] name = "memchr" version = "2.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "78ca9ab1a0babb1e7d5695e3530886289c18cf2f87ec19a575a0abdce112e3a3" -[[package]] -name = "memoffset" -version = "0.6.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5aa361d4faea93603064a027415f07bd8e1d5c88c9fbf68bf56a285428fd79ce" -dependencies = [ - "autocfg", -] - [[package]] name = "memoffset" version = "0.9.1" @@ -2564,22 +1762,6 @@ version = "0.3.17" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a" -[[package]] -name = "mime_guess" -version = "2.0.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f7c44f8e672c00fe5308fa235f821cb4198414e1c77935c1ab6948d3fd78550e" -dependencies = [ - "mime", - "unicase", -] - -[[package]] -name = "minimal-lexical" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a" - [[package]] name = "miniz_oxide" version = "0.7.4" @@ -2590,80 +1772,25 @@ dependencies = [ "simd-adler32", ] -[[package]] -name = "mio" -version = "0.6.23" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4afd66f5b91bf2a3bc13fad0e21caedac168ca4c707504e75585648ae80e4cc4" -dependencies = [ - "cfg-if 0.1.10", - "fuchsia-zircon", - "fuchsia-zircon-sys", - "iovec", - "kernel32-sys", - "libc", - "log", - "miow", - "net2", - "slab", - "winapi 0.2.8", -] - -[[package]] -name = "mio" -version = "0.8.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a4a650543ca06a924e8b371db273b2756685faae30f8487da1b56505a8f78b0c" -dependencies = [ - "libc", - "log", - "wasi 0.11.0+wasi-snapshot-preview1", - "windows-sys 0.48.0", -] - [[package]] name = "mio" version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4569e456d394deccd22ce1c1913e6ea0e54519f577285001215d33557431afe4" dependencies = [ - "hermit-abi 0.3.9", + "hermit-abi", "libc", "wasi 0.11.0+wasi-snapshot-preview1", "windows-sys 0.52.0", ] -[[package]] -name = "mio-extras" -version = "2.0.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "52403fe290012ce777c4626790c8951324a2b9e3316b3143779c72b029742f19" -dependencies = [ - "lazycell", - "log", - "mio 0.6.23", - "slab", -] - -[[package]] -name = "miow" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ebd808424166322d4a38da87083bfddd3ac4c131334ed55856112eb06d46944d" -dependencies = [ - "kernel32-sys", - "net2", - "winapi 0.2.8", - "ws2_32-sys", -] - [[package]] name = "muda" -version = "0.13.5" +version = "0.14.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "86b959f97c97044e4c96e32e1db292a7d594449546a3c6b77ae613dc3a5b5145" +checksum = "ba8ac4080fb1e097c2c22acae467e46e4da72d941f02e82b67a87a2a89fa38b1" dependencies = [ - "cocoa", + "cocoa 0.26.0", "crossbeam-channel", "dpi", "gtk", @@ -2673,20 +1800,21 @@ dependencies = [ "png", "serde", "thiserror", - "windows-sys 0.52.0", + "windows-sys 0.59.0", ] [[package]] name = "ndk" -version = "0.7.0" +version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "451422b7e4718271c8b5b3aadf5adedba43dc76312454b387e98fae0fc951aa0" +checksum = "c3f42e7bbe13d351b6bead8286a43aac9534b82bd3cc43e47037f012ebfd62d4" dependencies = [ - "bitflags 1.3.2", + "bitflags 2.6.0", "jni-sys", + "log", "ndk-sys", "num_enum", - "raw-window-handle 0.5.2", + "raw-window-handle", "thiserror", ] @@ -2698,156 +1826,25 @@ checksum = "27b02d87554356db9e9a873add8782d4ea6e3e58ea071a9adb9a2e8ddb884a8b" [[package]] name = "ndk-sys" -version = "0.4.1+23.1.7779620" +version = "0.6.0+11769913" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3cf2aae958bd232cac5069850591667ad422d263686d75b52a065f9badeee5a3" +checksum = "ee6cda3051665f1fb8d9e08fc35c96d5a244fb1be711a03b71118828afc9a873" dependencies = [ "jni-sys", ] -[[package]] -name = "net2" -version = "0.2.39" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b13b648036a2339d06de780866fbdfda0dde886de7b3af2ddeba8b14f4ee34ac" -dependencies = [ - "cfg-if 0.1.10", - "libc", - "winapi 0.3.9", -] - [[package]] name = "new_debug_unreachable" version = "1.0.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "650eef8c711430f1a879fdd01d4745a7deea475becfb90269c06775983bbf086" -[[package]] -name = "nix" -version = "0.22.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e4916f159ed8e5de0082076562152a76b7a1f64a01fd9d1e0fea002c37624faf" -dependencies = [ - "bitflags 1.3.2", - "cc", - "cfg-if 1.0.0", - "libc", - "memoffset 0.6.5", -] - -[[package]] -name = "nix" -version = "0.23.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f3790c00a0150112de0f4cd161e3d7fc4b2d8a5542ffc35f099a2562aecb35c" -dependencies = [ - "bitflags 1.3.2", - "cc", - "cfg-if 1.0.0", - "libc", - "memoffset 0.6.5", -] - -[[package]] -name = "nix" -version = "0.24.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fa52e972a9a719cecb6864fb88568781eb706bac2cd1d4f04a648542dbf78069" -dependencies = [ - "bitflags 1.3.2", - "cfg-if 1.0.0", - "libc", -] - -[[package]] -name = "nix" -version = "0.29.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "71e2746dc3a24dd78b3cfcb7be93368c6de9963d30f43a6a73998a9cf4b17b46" -dependencies = [ - "bitflags 2.6.0", - "cfg-if 1.0.0", - "cfg_aliases", - "libc", - "memoffset 0.9.1", -] - [[package]] name = "nodrop" version = "0.1.14" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "72ef4a56884ca558e5ddb05a1d1e7e1bfd9a68d9ed024c21704cc98872dae1bb" -[[package]] -name = "nom" -version = "5.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "08959a387a676302eebf4ddbcbc611da04285579f76f88ee0506c63b1a61dd4b" -dependencies = [ - "memchr", - "version_check", -] - -[[package]] -name = "nom" -version = "7.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d273983c5a657a70a3e8f2a01329822f3b8c8172b73826411a55751e404a0a4a" -dependencies = [ - "memchr", - "minimal-lexical", -] - -[[package]] -name = "notify" -version = "4.0.18" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b72dd35279a5dc895a30965e247b0961ba36c233dc48454a2de8ccd459f1afd3" -dependencies = [ - "bitflags 1.3.2", - "filetime", - "fsevent", - "fsevent-sys 2.0.1", - "inotify 0.7.1", - "libc", - "mio 0.6.23", - "mio-extras", - "walkdir", - "winapi 0.3.9", -] - -[[package]] -name = "notify" -version = "6.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6205bd8bb1e454ad2e27422015fb5e4f2bcc7e08fa8f27058670d208324a4d2d" -dependencies = [ - "bitflags 2.6.0", - "crossbeam-channel", - "filetime", - "fsevent-sys 4.1.0", - "inotify 0.9.6", - "kqueue", - "libc", - "log", - "mio 0.8.11", - "walkdir", - "windows-sys 0.48.0", -] - -[[package]] -name = "notify-rust" -version = "4.11.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26a1d03b6305ecefdd9c6c60150179bb8d9f0cd4e64bbcad1e41419e7bf5e414" -dependencies = [ - "log", - "mac-notification-sys", - "serde", - "tauri-winrt-notification", - "zbus", -] - [[package]] name = "nu-ansi-term" version = "0.46.0" @@ -2855,7 +1852,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "77a8165726e8236064dbb45459242600304b42a5ea24ee2948e18e023bf7ba84" dependencies = [ "overload", - "winapi 0.3.9", + "winapi", ] [[package]] @@ -2875,23 +1872,23 @@ dependencies = [ [[package]] name = "num_enum" -version = "0.5.11" +version = "0.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1f646caf906c20226733ed5b1374287eb97e3c2a5c227ce668c1f2ce20ae57c9" +checksum = "4e613fc340b2220f734a8595782c551f1250e969d87d3be1ae0579e8d4065179" dependencies = [ "num_enum_derive", ] [[package]] name = "num_enum_derive" -version = "0.5.11" +version = "0.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dcbff9bc912032c62bf65ef1d5aea88983b420f4f839db1e9b0c281a25c9c799" +checksum = "af1844ef2428cc3e1cb900be36181049ef3d3193c63e43026cfe202983b27a56" dependencies = [ - "proc-macro-crate 1.3.1", + "proc-macro-crate 3.1.0", "proc-macro2", "quote", - "syn 1.0.109", + "syn 2.0.72", ] [[package]] @@ -2904,17 +1901,6 @@ dependencies = [ "objc_exception", ] -[[package]] -name = "objc-foundation" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1add1b659e36c9607c7aab864a76c7a4c2760cd0cd2e120f3fb8b952c7e22bf9" -dependencies = [ - "block", - "objc", - "objc_id", -] - [[package]] name = "objc-sys" version = "0.3.5" @@ -3048,6 +2034,17 @@ version = "1.19.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3fdb12b2476b595f9358c5161aa467c2438859caa136dec86c26fdd2efe17b92" +[[package]] +name = "open" +version = "5.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "61a877bf6abd716642a53ef1b89fb498923a4afca5c754f9050b4d081c05c4b3" +dependencies = [ + "is-wsl", + "libc", + "pathdiff", +] + [[package]] name = "option-ext" version = "0.2.0" @@ -3055,13 +2052,13 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "04744f49eae99ab78e0d5c0b603ab218f515ea8cfe5a456d7629ad883a3b6e7d" [[package]] -name = "ordered-stream" -version = "0.2.0" +name = "os_pipe" +version = "1.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9aa2b01e1d916879f73a53d01d1d6cee68adbb31d6d9177a8cfce093cced1d50" +checksum = "5ffd2b0a5634335b135d5728d84c5e0fd726954b87111f7506a61c502280d982" dependencies = [ - "futures-core", - "pin-project-lite", + "libc", + "windows-sys 0.59.0", ] [[package]] @@ -3095,12 +2092,6 @@ dependencies = [ "system-deps", ] -[[package]] -name = "parking" -version = "2.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bb813b8af86854136c6922af0598d719255ecb2179515e6e7730d468f05c9cae" - [[package]] name = "parking_lot" version = "0.12.3" @@ -3117,13 +2108,19 @@ version = "0.9.10" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1e401f977ab385c9e4e3ab30627d6f26d00e2c73eef317493c4ec6d468726cf8" dependencies = [ - "cfg-if 1.0.0", + "cfg-if", "libc", - "redox_syscall 0.5.3", + "redox_syscall", "smallvec", "windows-targets 0.52.6", ] +[[package]] +name = "pathdiff" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8835116a5c179084a830efb3adc117ab007512b535bc1a21c991d3b32a6b44dd" + [[package]] name = "percent-encoding" version = "2.3.1" @@ -3180,16 +2177,6 @@ dependencies = [ "phf_shared 0.10.0", ] -[[package]] -name = "phf_codegen" -version = "0.11.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e8d39688d359e6b34654d328e262234662d16cc0f60ec8dcbe5e718709342a5a" -dependencies = [ - "phf_generator 0.11.2", - "phf_shared 0.11.2", -] - [[package]] name = "phf_generator" version = "0.8.0" @@ -3306,17 +2293,6 @@ version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" -[[package]] -name = "piper" -version = "0.2.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ae1d5c74c9876f070d3e8fd503d748c7d974c3e48da8f41350fa5222ef9b4391" -dependencies = [ - "atomic-waker", - "fastrand", - "futures-io", -] - [[package]] name = "pkg-config" version = "0.3.30" @@ -3331,7 +2307,7 @@ checksum = "42cf17e9a1800f5f396bc67d193dc9411b59012a5876445ef450d449881e1016" dependencies = [ "base64 0.22.1", "indexmap 2.2.6", - "quick-xml 0.32.0", + "quick-xml", "serde", "time", ] @@ -3349,21 +2325,6 @@ dependencies = [ "miniz_oxide", ] -[[package]] -name = "polling" -version = "3.7.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a3ed00ed3fbf728b5816498ecd316d1716eecaced9c0c8d2c5a6740ca214985b" -dependencies = [ - "cfg-if 1.0.0", - "concurrent-queue", - "hermit-abi 0.4.0", - "pin-project-lite", - "rustix", - "tracing", - "windows-sys 0.52.0", -] - [[package]] name = "powerfmt" version = "0.2.0" @@ -3449,15 +2410,6 @@ dependencies = [ "unicode-ident", ] -[[package]] -name = "quick-xml" -version = "0.31.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1004a344b30a54e2ee58d66a71b32d2db2feb0a31f9a2d302bf0536f15de2a33" -dependencies = [ - "memchr", -] - [[package]] name = "quick-xml" version = "0.32.0" @@ -3557,27 +2509,12 @@ dependencies = [ "rand_core 0.5.1", ] -[[package]] -name = "raw-window-handle" -version = "0.5.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f2ff9a1f06a88b01621b7ae906ef0211290d1c8a168a15542486a8f61c0833b9" - [[package]] name = "raw-window-handle" version = "0.6.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "20675572f6f24e9e76ef639bc5552774ed45f1c30e2951e1e99c59888861c539" -[[package]] -name = "redox_syscall" -version = "0.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4722d768eff46b75989dd134e5c353f0d6296e5aaa3132e776cbdb56be7731aa" -dependencies = [ - "bitflags 1.3.2", -] - [[package]] name = "redox_syscall" version = "0.5.3" @@ -3604,7 +2541,7 @@ version = "1.10.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b91213439dad192326a0d7c6ee3955910425f441d7038e0d6933b0aec5c4517f" dependencies = [ - "aho-corasick 1.1.3", + "aho-corasick", "memchr", "regex-automata 0.4.7", "regex-syntax 0.8.4", @@ -3625,7 +2562,7 @@ version = "0.4.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "38caf58cc5ef2fed281f89292ef23f6365465ed9a41b7a7754eb4e26496c92df" dependencies = [ - "aho-corasick 1.1.3", + "aho-corasick", "memchr", "regex-syntax 0.8.4", ] @@ -3667,7 +2604,7 @@ dependencies = [ "serde", "serde_json", "serde_urlencoded", - "sync_wrapper 1.0.1", + "sync_wrapper", "tokio", "tokio-util", "tower-service", @@ -3694,19 +2631,6 @@ dependencies = [ "semver", ] -[[package]] -name = "rustix" -version = "0.38.34" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "70dc5ec042f7a43c4a73241207cecc9873a06d45debb38b329f8541d85c2730f" -dependencies = [ - "bitflags 2.6.0", - "errno", - "libc", - "linux-raw-sys", - "windows-sys 0.52.0", -] - [[package]] name = "rustversion" version = "1.0.17" @@ -3848,16 +2772,6 @@ dependencies = [ "serde", ] -[[package]] -name = "serde_path_to_error" -version = "0.1.16" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "af99884400da37c88f5e9146b7f1fd0fbcae8f6eec4e9da38b67d05486f814a6" -dependencies = [ - "itoa 1.0.11", - "serde", -] - [[package]] name = "serde_repr" version = "0.1.19" @@ -3914,7 +2828,7 @@ version = "3.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a8fee4991ef4f274617a51ad4af30519438dacb2f56ac773b08a1922ff743350" dependencies = [ - "darling 0.20.10", + "darling", "proc-macro2", "quote", "syn 2.0.72", @@ -3963,24 +2877,13 @@ dependencies = [ "utils", ] -[[package]] -name = "sha1" -version = "0.10.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e3bf829a2d51ab4a5ddf1352d8470c140cadc8301b2ae1789db023f01cedd6ba" -dependencies = [ - "cfg-if 1.0.0", - "cpufeatures", - "digest", -] - [[package]] name = "sha2" version = "0.10.8" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "793db75ad2bcafc3ffa7c68b215fee268f537982cd901d132f89c6343f3a3dc8" dependencies = [ - "cfg-if 1.0.0", + "cfg-if", "cpufeatures", "digest", ] @@ -3995,18 +2898,13 @@ dependencies = [ ] [[package]] -name = "shell-escape" -version = "0.1.5" +name = "shared_child" +version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "45bb67a18fa91266cc7807181f62f9178a6873bfad7dc788c42e6430db40184f" - -[[package]] -name = "signal-hook-registry" -version = "1.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a9e9e0b4211b72e7b8b6e85c807d36c212bdb33ea8587f7569562a84df5465b1" +checksum = "09fa9338aed9a1df411814a5b2252f7cd206c55ae9bf2fa763f8de84603aa60c" dependencies = [ "libc", + "windows-sys 0.59.0", ] [[package]] @@ -4036,17 +2934,6 @@ version = "1.13.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67" -[[package]] -name = "socket2" -version = "0.3.19" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "122e570113d28d773067fab24266b66753f6ea915758651696b6e35e49f88d6e" -dependencies = [ - "cfg-if 1.0.0", - "libc", - "winapi 0.3.9", -] - [[package]] name = "socket2" version = "0.5.7" @@ -4065,7 +2952,7 @@ checksum = "d623bff5d06f60d738990980d782c8c866997d9194cfe79ecad00aa2f76826dd" dependencies = [ "bytemuck", "cfg_aliases", - "core-graphics", + "core-graphics 0.23.2", "foreign-types", "js-sys", "log", @@ -4073,8 +2960,8 @@ dependencies = [ "objc2-app-kit", "objc2-foundation", "objc2-quartz-core", - "raw-window-handle 0.6.2", - "redox_syscall 0.5.3", + "raw-window-handle", + "redox_syscall", "wasm-bindgen", "web-sys", "windows-sys 0.52.0", @@ -4121,25 +3008,6 @@ dependencies = [ "loom", ] -[[package]] -name = "static_assertions" -version = "1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f" - -[[package]] -name = "stderrlog" -version = "0.5.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "69a26bbf6de627d389164afa9783739b56746c6c72c4ed16539f4ff54170327b" -dependencies = [ - "atty", - "chrono", - "log", - "termcolor", - "thread_local", -] - [[package]] name = "string_cache" version = "0.8.7" @@ -4166,18 +3034,6 @@ dependencies = [ "quote", ] -[[package]] -name = "strsim" -version = "0.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ea5119cdb4c55b55d432abb513a0429384878c15dde60cc77b1c99de1a95a6a" - -[[package]] -name = "strsim" -version = "0.10.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "73473c0e59e6d5812c5dfe2a064a6444949f089e20eec9a2e5506596494e4623" - [[package]] name = "strsim" version = "0.11.1" @@ -4186,9 +3042,9 @@ checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f" [[package]] name = "swift-rs" -version = "1.0.6" +version = "1.0.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1bbdb58577b6301f8d17ae2561f32002a5bae056d444e0f69e611e504a276204" +checksum = "4057c98e2e852d51fdcfca832aac7b571f6b351ad159f9eda5db1655f8d0c4d7" dependencies = [ "base64 0.21.7", "serde", @@ -4217,12 +3073,6 @@ dependencies = [ "unicode-ident", ] -[[package]] -name = "sync_wrapper" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2047c6ded9c721764247e62cd3b03c09ffc529b2ba5b10ec482ae507a4a70160" - [[package]] name = "sync_wrapper" version = "1.0.1" @@ -4242,35 +3092,16 @@ dependencies = [ "version-compare", ] -[[package]] -name = "systemfd" -version = "0.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b01b768cd5bfe832b494513815ce9a0b18ab5453bf6e1a201c2c0cde56d893a9" -dependencies = [ - "anyhow", - "clap", - "console", - "lazy_static", - "libc", - "nix 0.23.2", - "regex", - "socket2 0.3.19", - "thiserror", - "uuid 0.8.2", - "winapi 0.3.9", -] - [[package]] name = "tao" -version = "0.28.1" +version = "0.30.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ea538df05fbc2dcbbd740ba0cfe8607688535f4798d213cbbfa13ce494f3451f" +checksum = "82e7ede56f9ef03a0bb384c7b2bed4f3985ee7f3f79ec887c50d8466eec21096" dependencies = [ "bitflags 2.6.0", - "cocoa", - "core-foundation", - "core-graphics", + "cocoa 0.26.0", + "core-foundation 0.10.0", + "core-graphics 0.24.0", "crossbeam-channel", "dispatch", "dlopen2", @@ -4289,13 +3120,13 @@ dependencies = [ "objc", "once_cell", "parking_lot", - "raw-window-handle 0.6.2", + "raw-window-handle", "scopeguard", "tao-macros", "unicode-segmentation", "url", - "windows 0.57.0", - "windows-core 0.57.0", + "windows 0.58.0", + "windows-core 0.58.0", "windows-version", "x11-dl", ] @@ -4319,14 +3150,13 @@ checksum = "4873307b7c257eddcb50c9bedf158eb669578359fb28428bef438fec8e6ba7c2" [[package]] name = "tauri" -version = "2.0.0-beta.24" +version = "2.0.0-rc.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3eab508aad4ae86e23865e294b20a7bb89bd7afea523897b7478329b841d4295" +checksum = "eb3c3b1c7ac5b72d59da307b84af900a0098c74c9d7369f65018cd8ec0eb50fb" dependencies = [ "anyhow", "bytes", - "cocoa", - "dirs 5.0.1", + "dirs", "dunce", "embed_plist", "futures-util", @@ -4340,9 +3170,12 @@ dependencies = [ "log", "mime", "muda", - "objc", + "objc2", + "objc2-app-kit", + "objc2-foundation", "percent-encoding", - "raw-window-handle 0.6.2", + "plist", + "raw-window-handle", "reqwest", "serde", "serde_json", @@ -4363,18 +3196,18 @@ dependencies = [ "webkit2gtk", "webview2-com", "window-vibrancy", - "windows 0.57.0", + "windows 0.58.0", ] [[package]] name = "tauri-build" -version = "2.0.0-beta.19" +version = "2.0.0-rc.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "498f587026501e4bbc5d6273b63f8956b03c37b3d3b2027f9c756fcd468e9c62" +checksum = "6ff5713e81e02e0b99f5219b275abbd7d2c0cc0f30180e25b1b650e08feeac63" dependencies = [ "anyhow", "cargo_toml", - "dirs 5.0.1", + "dirs", "glob", "heck 0.5.0", "json-patch", @@ -4390,9 +3223,9 @@ dependencies = [ [[package]] name = "tauri-codegen" -version = "2.0.0-beta.19" +version = "2.0.0-rc.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "43bbc731067e319ef60601bf5716d1e706ee9ae28e38c0587f7165c7d6824cdf" +checksum = "5370f2591dcc93d4ff08d9dd168f5097f79b34e859883586a409c627544190e3" dependencies = [ "base64 0.22.1", "brotli", @@ -4411,15 +3244,15 @@ dependencies = [ "thiserror", "time", "url", - "uuid 1.10.0", + "uuid", "walkdir", ] [[package]] name = "tauri-macros" -version = "2.0.0-beta.19" +version = "2.0.0-rc.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "36b4a44346577ccde75a24c62405a4c3b4f7a3a76614ee6cf1ed14a0b756795c" +checksum = "19442dc8ee002ab1926586f6aecb90114f3a1226766008b0c9ac2d9fec9eeb7e" dependencies = [ "heck 0.5.0", "proc-macro2", @@ -4430,37 +3263,77 @@ dependencies = [ ] [[package]] -name = "tauri-runtime" -version = "2.0.0-beta.20" +name = "tauri-plugin" +version = "2.0.0-rc.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fe978df03966febbebc608931dc2cf26ef94df70855a18b05f07134cf474de09" +checksum = "5e3368e91a98aa55ea4e3e8ccff516bc1ed2f85872c335ec35e9b345469032e0" +dependencies = [ + "anyhow", + "glob", + "plist", + "schemars", + "serde", + "serde_json", + "tauri-utils", + "toml 0.8.16", + "walkdir", +] + +[[package]] +name = "tauri-plugin-shell" +version = "2.0.0-rc.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e83800ddf78b820172efb5ed7310344e8e4f97fd30cd8237a3f20c12a79eb136" +dependencies = [ + "encoding_rs", + "log", + "open", + "os_pipe", + "regex", + "schemars", + "serde", + "serde_json", + "shared_child", + "tauri", + "tauri-plugin", + "thiserror", + "tokio", +] + +[[package]] +name = "tauri-runtime" +version = "2.0.0-rc.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c5f38d8aaa1e81d20e8e208e3e317f81b59fb75c530fbae8a90e72d02001d687" dependencies = [ "dpi", "gtk", "http", "jni", - "raw-window-handle 0.6.2", + "raw-window-handle", "serde", "serde_json", "tauri-utils", "thiserror", "url", - "windows 0.57.0", + "windows 0.58.0", ] [[package]] name = "tauri-runtime-wry" -version = "2.0.0-beta.20" +version = "2.0.0-rc.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "11e4d568f61095f507b3fc4254dfbfff3b20de2a1d66167ffca3f6d90b14db8f" +checksum = "cf1ef5171e14c8fe3b5a63e75004c20d057747bc3e7fdc5f8ded625f0b29f5c7" dependencies = [ - "cocoa", "gtk", "http", "jni", "log", + "objc2", + "objc2-app-kit", + "objc2-foundation", "percent-encoding", - "raw-window-handle 0.6.2", + "raw-window-handle", "softbuffer", "tao", "tauri-runtime", @@ -4468,18 +3341,18 @@ dependencies = [ "url", "webkit2gtk", "webview2-com", - "windows 0.57.0", + "windows 0.58.0", "wry", ] [[package]] name = "tauri-utils" -version = "2.0.0-beta.19" +version = "2.0.0-rc.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e20e51856f343c503892749b27d34042e6ca83a0369a12de3c5552d9874d04e8" +checksum = "31fe4c9148e1b35225e1c00753f24b517ce00041d02eb4b4d6fd10613a47736c" dependencies = [ "brotli", - "cargo_metadata 0.18.1", + "cargo_metadata", "ctor", "dunce", "glob", @@ -4517,30 +3390,6 @@ dependencies = [ "toml 0.7.8", ] -[[package]] -name = "tauri-winrt-notification" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f89f5fb70d6f62381f5d9b2ba9008196150b40b75f3068eb24faeddf1c686871" -dependencies = [ - "quick-xml 0.31.0", - "windows 0.56.0", - "windows-version", -] - -[[package]] -name = "tempfile" -version = "3.12.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "04cbcdd0c794ebb0d4cf35e88edd2f7d2c4c3e9a5a6dab322839b321c6a87a64" -dependencies = [ - "cfg-if 1.0.0", - "fastrand", - "once_cell", - "rustix", - "windows-sys 0.59.0", -] - [[package]] name = "tendril" version = "0.4.3" @@ -4552,37 +3401,6 @@ dependencies = [ "utf-8", ] -[[package]] -name = "termcolor" -version = "1.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bab24d30b911b2376f3a13cc2cd443142f0c81dda04c118693e35b3835757755" -dependencies = [ - "winapi-util", -] - -[[package]] -name = "terminfo" -version = "0.7.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da31aef70da0f6352dbcb462683eb4dd2bfad01cf3fc96cf204547b9a839a585" -dependencies = [ - "dirs 4.0.0", - "fnv", - "nom 5.1.3", - "phf 0.11.2", - "phf_codegen 0.11.2", -] - -[[package]] -name = "textwrap" -version = "0.11.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d326610f408c7a4eb6f51c37c330e496b08506c9457c9d34287ecc38809fb060" -dependencies = [ - "unicode-width", -] - [[package]] name = "thin-slice" version = "0.1.1" @@ -4615,7 +3433,7 @@ version = "1.1.8" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8b9ef9bad013ada3808854ceac7b46812a6465ba368859a37e2100283d2d719c" dependencies = [ - "cfg-if 1.0.0", + "cfg-if", "once_cell", ] @@ -4674,24 +3492,12 @@ dependencies = [ "backtrace", "bytes", "libc", - "mio 1.0.1", + "mio", "pin-project-lite", - "socket2 0.5.7", - "tokio-macros", + "socket2", "windows-sys 0.52.0", ] -[[package]] -name = "tokio-macros" -version = "2.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "693d596312e88961bc67d7f1f97af8a70227d9f90c31bba5806eec004978d752" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.72", -] - [[package]] name = "tokio-util" version = "0.7.11" @@ -4799,32 +3605,6 @@ dependencies = [ "tokio", "tower-layer", "tower-service", - "tracing", -] - -[[package]] -name = "tower-http" -version = "0.5.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e9cd434a998747dd2c4276bc96ee2e0c7a2eadf3cae88e52be55a05fa9053f5" -dependencies = [ - "bitflags 2.6.0", - "bytes", - "futures-util", - "http", - "http-body", - "http-body-util", - "http-range-header", - "httpdate", - "mime", - "mime_guess", - "percent-encoding", - "pin-project-lite", - "tokio", - "tokio-util", - "tower-layer", - "tower-service", - "tracing", ] [[package]] @@ -4833,20 +3613,6 @@ version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c20c8dbed6283a09604c3e69b4b7eeb54e298b8a600d4d5ecb5ad39de609f1d0" -[[package]] -name = "tower-livereload" -version = "0.9.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "57d7d9fecf1242d1c6a3cf8f7f3c2da94e6aac553bb7062ab6d03e16b9872fd0" -dependencies = [ - "bytes", - "http", - "http-body", - "pin-project-lite", - "tokio", - "tower", -] - [[package]] name = "tower-service" version = "0.3.2" @@ -4859,7 +3625,6 @@ version = "0.1.40" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c3523ab5a71916ccf420eebdf5521fcef02141234bbc0b8a49f2fdc4544364ef" dependencies = [ - "log", "pin-project-lite", "tracing-attributes", "tracing-core", @@ -4917,22 +3682,23 @@ dependencies = [ [[package]] name = "tray-icon" -version = "0.14.3" +version = "0.17.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3ad8319cca93189ea9ab1b290de0595960529750b6b8b501a399ed1ec3775d60" +checksum = "044d7738b3d50f288ddef035b793228740ad4d927f5466b0af55dc15e7e03cfe" dependencies = [ - "cocoa", - "core-graphics", + "core-graphics 0.24.0", "crossbeam-channel", - "dirs 5.0.1", + "dirs", "libappindicator", "muda", - "objc", + "objc2", + "objc2-app-kit", + "objc2-foundation", "once_cell", "png", "serde", "thiserror", - "windows-sys 0.52.0", + "windows-sys 0.59.0", ] [[package]] @@ -4953,17 +3719,6 @@ version = "1.17.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "42ff0bf0c66b8238c6f3b578df37d0b7848e55df8577b3f74f92a69acceeb825" -[[package]] -name = "uds_windows" -version = "1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "89daebc3e6fd160ac4aa9fc8b3bf71e1f74fbf92367ae71fb83a037e8bf164b9" -dependencies = [ - "memoffset 0.9.1", - "tempfile", - "winapi 0.3.9", -] - [[package]] name = "unic-char-property" version = "0.9.0" @@ -5005,15 +3760,6 @@ dependencies = [ "unic-common", ] -[[package]] -name = "unicase" -version = "2.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f7d2d4dafb69621809a81864c9c1b864479e1235c0dd4e199924b9742439ed89" -dependencies = [ - "version_check", -] - [[package]] name = "unicode-bidi" version = "0.3.15" @@ -5041,12 +3787,6 @@ version = "1.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d4c87d22b6e3f4a18d4d40ef354e97c90fcb14dd91d7dc0aa9d8a1172ebf7202" -[[package]] -name = "unicode-width" -version = "0.1.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0336d538f7abc86d282a4189614dfaa90810dfc2c6f6427eaf88e16311dd225d" - [[package]] name = "url" version = "2.5.2" @@ -5061,11 +3801,10 @@ dependencies = [ [[package]] name = "urlpattern" -version = "0.2.0" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f9bd5ff03aea02fa45b13a7980151fe45009af1980ba69f651ec367121a31609" +checksum = "70acd30e3aa1450bc2eece896ce2ad0d178e9c079493819301573dae3c37ba6d" dependencies = [ - "derive_more", "regex", "serde", "unic-ucd-ident", @@ -5087,15 +3826,6 @@ dependencies = [ "dotenv", ] -[[package]] -name = "uuid" -version = "0.8.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bc5cf98d8186244414c848017f0e2676b3fcb46807f6668a97dfe67359a3c4b7" -dependencies = [ - "getrandom 0.2.15", -] - [[package]] name = "uuid" version = "1.10.0" @@ -5111,12 +3841,6 @@ version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "830b7e5d4d90034032940e4ace0d9a9a057e7a45cd94e6c007832e39edb82f6d" -[[package]] -name = "vec_map" -version = "0.8.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1bddf1187be692e79c5ffeab891132dfb0f236ed36a43c7ed39f1165ee20191" - [[package]] name = "version-compare" version = "0.2.0" @@ -5186,7 +3910,7 @@ version = "0.2.92" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4be2531df63900aeb2bca0daaaddec08491ee64ceecbee5076636a3b026795a8" dependencies = [ - "cfg-if 1.0.0", + "cfg-if", "wasm-bindgen-macro", ] @@ -5211,7 +3935,7 @@ version = "0.4.42" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "76bc14366121efc8dbb487ab05bcc9d346b3b5ec0eaa76e46594cabbe51762c0" dependencies = [ - "cfg-if 1.0.0", + "cfg-if", "js-sys", "wasm-bindgen", "web-sys", @@ -5259,25 +3983,6 @@ dependencies = [ "web-sys", ] -[[package]] -name = "watchexec" -version = "1.17.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38928d7ff5274e31594da2d46453a2c741fa340d1bf0ef6f2cb3e43537361265" -dependencies = [ - "clearscreen", - "command-group", - "derive_builder", - "glob", - "globset", - "lazy_static", - "log", - "nix 0.22.3", - "notify 4.0.18", - "walkdir", - "winapi 0.3.9", -] - [[package]] name = "web-sys" version = "0.3.69" @@ -5334,23 +4039,23 @@ dependencies = [ [[package]] name = "webview2-com" -version = "0.31.0" +version = "0.33.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6516cfa64c6b3212686080eeec378e662c2af54bb2a5b2a22749673f5cb2226f" +checksum = "6f61ff3d9d0ee4efcb461b14eb3acfda2702d10dc329f339303fc3e57215ae2c" dependencies = [ "webview2-com-macros", "webview2-com-sys", - "windows 0.57.0", - "windows-core 0.57.0", - "windows-implement 0.57.0", - "windows-interface 0.57.0", + "windows 0.58.0", + "windows-core 0.58.0", + "windows-implement", + "windows-interface", ] [[package]] name = "webview2-com-macros" -version = "0.7.0" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ac1345798ecd8122468840bcdf1b95e5dc6d2206c5e4b0eafa078d061f59c9bc" +checksum = "1d228f15bba3b9d56dde8bddbee66fa24545bd17b48d5128ccf4a8742b18e431" dependencies = [ "proc-macro2", "quote", @@ -5359,33 +4064,15 @@ dependencies = [ [[package]] name = "webview2-com-sys" -version = "0.31.0" +version = "0.33.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c76d5b77320ff155660be1df3e6588bc85c75f1a9feef938cc4dc4dd60d1d7cf" +checksum = "a3a3e2eeb58f82361c93f9777014668eb3d07e7d174ee4c819575a9208011886" dependencies = [ "thiserror", - "windows 0.57.0", - "windows-core 0.57.0", + "windows 0.58.0", + "windows-core 0.58.0", ] -[[package]] -name = "which" -version = "4.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "87ba24419a2078cd2b0f2ede2691b6c66d8e47836da3b6db8265ebad47afbfc7" -dependencies = [ - "either", - "home", - "once_cell", - "rustix", -] - -[[package]] -name = "winapi" -version = "0.2.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "167dc9d6949a9b857f3451275e911c3f44255842c1f7a76f33c55103a909087a" - [[package]] name = "winapi" version = "0.3.9" @@ -5396,12 +4083,6 @@ dependencies = [ "winapi-x86_64-pc-windows-gnu", ] -[[package]] -name = "winapi-build" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2d315eee3b34aca4797b2da6b13ed88266e6d612562a0c46390af8299fc699bc" - [[package]] name = "winapi-i686-pc-windows-gnu" version = "0.4.0" @@ -5429,9 +4110,9 @@ version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "33082acd404763b315866e14a0d5193f3422c81086657583937a750cdd3ec340" dependencies = [ - "cocoa", + "cocoa 0.25.0", "objc", - "raw-window-handle 0.6.2", + "raw-window-handle", "windows-sys 0.52.0", "windows-version", ] @@ -5447,21 +4128,11 @@ dependencies = [ [[package]] name = "windows" -version = "0.56.0" +version = "0.58.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1de69df01bdf1ead2f4ac895dc77c9351aefff65b2f3db429a343f9cbf05e132" +checksum = "dd04d41d93c4992d421894c18c8b43496aa748dd4c081bac0dc93eb0489272b6" dependencies = [ - "windows-core 0.56.0", - "windows-targets 0.52.6", -] - -[[package]] -name = "windows" -version = "0.57.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "12342cb4d8e3b046f3d80effd474a7a02447231330ef77d71daa6fbc40681143" -dependencies = [ - "windows-core 0.57.0", + "windows-core 0.58.0", "windows-targets 0.52.6", ] @@ -5476,44 +4147,22 @@ dependencies = [ [[package]] name = "windows-core" -version = "0.56.0" +version = "0.58.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4698e52ed2d08f8658ab0c39512a7c00ee5fe2688c65f8c0a4f06750d729f2a6" +checksum = "6ba6d44ec8c2591c134257ce647b7ea6b20335bf6379a27dac5f1641fcf59f99" dependencies = [ - "windows-implement 0.56.0", - "windows-interface 0.56.0", - "windows-result", - "windows-targets 0.52.6", -] - -[[package]] -name = "windows-core" -version = "0.57.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d2ed2439a290666cd67ecce2b0ffaad89c2a56b976b736e6ece670297897832d" -dependencies = [ - "windows-implement 0.57.0", - "windows-interface 0.57.0", + "windows-implement", + "windows-interface", "windows-result", + "windows-strings", "windows-targets 0.52.6", ] [[package]] name = "windows-implement" -version = "0.56.0" +version = "0.58.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f6fc35f58ecd95a9b71c4f2329b911016e6bec66b3f2e6a4aad86bd2e99e2f9b" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.72", -] - -[[package]] -name = "windows-implement" -version = "0.57.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9107ddc059d5b6fbfbffdfa7a7fe3e22a226def0b2608f72e9d552763d3e1ad7" +checksum = "2bbd5b46c938e506ecbce286b6628a02171d56153ba733b6c741fc627ec9579b" dependencies = [ "proc-macro2", "quote", @@ -5522,20 +4171,9 @@ dependencies = [ [[package]] name = "windows-interface" -version = "0.56.0" +version = "0.58.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "08990546bf4edef8f431fa6326e032865f27138718c587dc21bc0265bbcb57cc" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.72", -] - -[[package]] -name = "windows-interface" -version = "0.57.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "29bee4b38ea3cde66011baa44dba677c432a78593e202392d1e9070cf2a7fca7" +checksum = "053c4c462dc91d3b1504c6fe5a726dd15e216ba718e84a0e46a88fbe5ded3515" dependencies = [ "proc-macro2", "quote", @@ -5544,13 +4182,23 @@ dependencies = [ [[package]] name = "windows-result" -version = "0.1.2" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5e383302e8ec8515204254685643de10811af0ed97ea37210dc26fb0032647f8" +checksum = "1d1043d8214f791817bab27572aaa8af63732e11bf84aa21a45a78d6c317ae0e" dependencies = [ "windows-targets 0.52.6", ] +[[package]] +name = "windows-strings" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4cd9b125c486025df0eabcb585e62173c6c9eddcec5d117d3b6e8c30e2ee4d10" +dependencies = [ + "windows-result", + "windows-targets 0.52.6", +] + [[package]] name = "windows-sys" version = "0.45.0" @@ -5798,20 +4446,20 @@ version = "0.52.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a277a57398d4bfa075df44f501a17cfdf8542d224f0d36095a2adc7aee4ef0a5" dependencies = [ - "cfg-if 1.0.0", + "cfg-if", "windows-sys 0.48.0", ] [[package]] name = "wry" -version = "0.41.0" +version = "0.43.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "68b00c945786b02d7805d09a969fa36d0eee4e0bd4fb3ec2a79d2bf45a1b44cd" +checksum = "f4d715cf5fe88e9647f3d17b207b6d060d4a88e7171d4ccb2d2c657dd1d44728" dependencies = [ "base64 0.22.1", "block", - "cocoa", - "core-graphics", + "cocoa 0.26.0", + "core-graphics 0.24.0", "crossbeam-channel", "dpi", "dunce", @@ -5824,13 +4472,11 @@ dependencies = [ "kuchikiki", "libc", "ndk", - "ndk-context", - "ndk-sys", "objc", "objc_id", "once_cell", "percent-encoding", - "raw-window-handle 0.6.2", + "raw-window-handle", "sha2", "soup3", "tao-macros", @@ -5838,22 +4484,12 @@ dependencies = [ "webkit2gtk", "webkit2gtk-sys", "webview2-com", - "windows 0.57.0", - "windows-core 0.57.0", + "windows 0.58.0", + "windows-core 0.58.0", "windows-version", "x11-dl", ] -[[package]] -name = "ws2_32-sys" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d59cefebd0c892fa2dd6de581e937301d8552cb44489cdff035c6187cb63fa5e" -dependencies = [ - "winapi 0.2.8", - "winapi-build", -] - [[package]] name = "x11" version = "2.21.0" @@ -5874,112 +4510,3 @@ dependencies = [ "once_cell", "pkg-config", ] - -[[package]] -name = "xdg-home" -version = "1.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ca91dcf8f93db085f3a0a29358cd0b9d670915468f4290e8b85d118a34211ab8" -dependencies = [ - "libc", - "windows-sys 0.52.0", -] - -[[package]] -name = "zbus" -version = "4.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bb97012beadd29e654708a0fdb4c84bc046f537aecfde2c3ee0a9e4b4d48c725" -dependencies = [ - "async-broadcast", - "async-executor", - "async-fs", - "async-io", - "async-lock", - "async-process", - "async-recursion", - "async-task", - "async-trait", - "blocking", - "enumflags2", - "event-listener", - "futures-core", - "futures-sink", - "futures-util", - "hex", - "nix 0.29.0", - "ordered-stream", - "rand 0.8.5", - "serde", - "serde_repr", - "sha1", - "static_assertions", - "tracing", - "uds_windows", - "windows-sys 0.52.0", - "xdg-home", - "zbus_macros", - "zbus_names", - "zvariant", -] - -[[package]] -name = "zbus_macros" -version = "4.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "267db9407081e90bbfa46d841d3cbc60f59c0351838c4bc65199ecd79ab1983e" -dependencies = [ - "proc-macro-crate 3.1.0", - "proc-macro2", - "quote", - "syn 2.0.72", - "zvariant_utils", -] - -[[package]] -name = "zbus_names" -version = "3.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4b9b1fef7d021261cc16cba64c351d291b715febe0fa10dc3a443ac5a5022e6c" -dependencies = [ - "serde", - "static_assertions", - "zvariant", -] - -[[package]] -name = "zvariant" -version = "4.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2084290ab9a1c471c38fc524945837734fbf124487e105daec2bb57fd48c81fe" -dependencies = [ - "endi", - "enumflags2", - "serde", - "static_assertions", - "zvariant_derive", -] - -[[package]] -name = "zvariant_derive" -version = "4.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "73e2ba546bda683a90652bac4a279bc146adad1386f25379cf73200d2002c449" -dependencies = [ - "proc-macro-crate 3.1.0", - "proc-macro2", - "quote", - "syn 2.0.72", - "zvariant_utils", -] - -[[package]] -name = "zvariant_utils" -version = "2.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c51bcff7cc3dbb5055396bcf774748c3dab426b4b8659046963523cee4808340" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.72", -] diff --git a/Cargo.toml b/Cargo.toml index 4831495..60a6b1b 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,7 +1,6 @@ [workspace] resolver = "2" members = [ - "crates/app", "crates/sesam-vitale", "crates/desktop", "crates/utils", diff --git a/README.md b/README.md index f928f81..e526dec 100644 --- a/README.md +++ b/README.md @@ -2,12 +2,13 @@ Logiciel de Pharmacie libre et open-source. -## Crates +## Modules applicatifs -- `app`: Interface du logiciel, servie par un serveur web propulsé par Axum. Utilisable en mode endpoint ou encapsulé dans le client `desktop` -- `desktop`: Client desktop propulsé par Tauri, encapsulant le serveur web `app` -- `sesam-vitale`: Bibliothèque de gestion des services SESAM-Vitale (Lecture des cartes CPS et Vitale, téléservices ...) -- `utils`: Bibliothèque de fonctions utilitaires +- `crates`: Dossier racine des modules Rust + - `crates/desktop`: Client desktop propulsé par Tauri, exposant le `frontend` + - `crates/sesam-vitale`: Bibliothèque de gestion des services SESAM-Vitale (Lecture des cartes CPS et Vitale, téléservices ...) + - `crates/utils`: Bibliothèque de fonctions utilitaires +- `frontend`: Interface web du logiciel, propulsée par Nuxt.js ## Installation @@ -26,22 +27,21 @@ Des exemples de fichiers de configuration sont disponibles à la racine du proje ### Pré-requis +### Frontend (Nuxt + Typescript) + +Le frontend est propulsé par Nuxt.js, un framework TypeScript pour Vue.js. Pour le développement, il est nécessaire d'installer les dépendances suivantes : +- [Bun](https://bun.sh/docs/installation), un gestionnaire de paquets, équivalent à `npm` en plus performant + #### Tauri CLI +TODO: Tauri CLI, réellement nécessaire ? + La CLI Tauri est nécessaire au lancement du client `desktop`. Elle peut être installée via Cargo : ```bash -cargo install tauri-cli --version "^2.0.0-beta" +cargo install tauri-cli --version "^2.0.0-rc" ``` -#### Tailwindcss CLI - -Le CLI Tailwindcss est nécessaire pour la génération du fichier `crates/app/assets/css/style.css`. - -La documentation d'installation est disponible sur le site officiel de Tailwindcss : https://tailwindcss.com/blog/standalone-cli - -La version actuellement utilisée est la [`v3.4.7`](https://github.com/tailwindlabs/tailwindcss/releases/tag/v3.4.7) - #### SESAM-Vitale La crate `sesam-vitale` nécessite la présence des librairies dynamiques fournies par le package FSV et la CryptolibCPS. Les instructions d'installation sont disponibles dans le [README](crates/sesam-vitale/README.md) de la crate `sesam-vitale`. @@ -54,29 +54,17 @@ Le logiciel dans sa globalité peut être lancé via la commande suivante : cargo tauri dev ``` -/!\ Attention, le lancement du client `desktop` ne génère pas le fichier `crates/app/assets/css/style.css` automatiquement pour le moment. En cas de modification des interfaces web, il est donc nécessaire de procéder à sa génération comme indiqué dans le [README](crates/app/README.md) de la crate `app`. +/!\ Attention, le lancement du client `desktop` ne génère pas le fichier `frontend/assets/css/style.css` automatiquement pour le moment. En cas de modification des interfaces web, il est donc nécessaire de procéder à sa génération comme indiqué dans le [README](frontend/README.md) du module `frontend`. +// TODO: Adapter autogénération Tailwind au nouveau Tauri + Nuxt ? Si vous souhaitez lancer les composants séparément, les indications de lancement sont disponibles dans les README des différents crates. -- [app](crates/app/README.md) +- [frontend](frontend/README.md) - [sesam-vitale](crates/sesam-vitale/README.md) -## Rechargement automatique - -Pour permettre de développer plus rapidement, il existe une librairie qui recompile automatiquement nos modifications en cours : [`cargo-watch`](https://github.com/watchexec/cargo-watch) permet de relancer une commande `cargo` lorsqu'un fichier est modifié (example: `cargo run` --> `cargo watch -x run`). - -Voici la commande pour l'installer dans un _package_ : -```bash -cargo add cargo-watch --dev --package app -``` - -Le fichier [`.ignore`](./ignore) permet d'ignorer certains fichiers pour éviter de relancer la recompilation inutilement. - -⚠️ La librairie n'est pas compatible avec _Windows 7_ et les versions antérieurs de _Windows_. - ## Build -Packager le client desktop +Pour packager le client `desktop`, il est nécessaire de faire appel à la CLI Tauri, qui se charge de gérer le build du `frontend` et son intégration au bundle : ```bash cargo tauri build diff --git a/crates/desktop/Cargo.toml b/crates/desktop/Cargo.toml index 59e5d2f..2d0c806 100644 --- a/crates/desktop/Cargo.toml +++ b/crates/desktop/Cargo.toml @@ -10,16 +10,11 @@ name = "desktop_lib" crate-type = ["lib", "cdylib", "staticlib"] [build-dependencies] -tauri-build = { version = "2.0.0-beta", features = [] } +tauri-build = { version = "2.0.0-rc", features = [] } [dependencies] -axum = "0.7.5" -tauri = { version = "2.0.0-beta", features = [] } -tower = "0.4.13" -tokio = "1.39.1" - -app = { path = "../app" } -http = "1.1.0" -bytes = "1.6.1" -thiserror = "1.0.63" +tauri = { version = "2.0.0-rc", features = [] } +tauri-plugin-shell = "2.0.0-rc" +serde = { version = "1", features = ["derive"] } +serde_json = "1" diff --git a/crates/desktop/capabilities/default.json b/crates/desktop/capabilities/default.json new file mode 100644 index 0000000..3bb4cc4 --- /dev/null +++ b/crates/desktop/capabilities/default.json @@ -0,0 +1,10 @@ +{ + "$schema": "../gen/schemas/desktop-schema.json", + "identifier": "default", + "description": "Capability for the main window", + "windows": ["main"], + "permissions": [ + "core:default", + "shell:allow-open" + ] +} diff --git a/crates/desktop/src/lib.rs b/crates/desktop/src/lib.rs index ac8bc77..291bed7 100644 --- a/crates/desktop/src/lib.rs +++ b/crates/desktop/src/lib.rs @@ -1,88 +1,14 @@ -use axum::body::{to_bytes, Body}; -use axum::Router; -use bytes::Bytes; -use http::{request, response, Request, Response}; -use std::path::PathBuf; -use std::sync::Arc; -use tauri::path::BaseDirectory; -use tauri::Manager; -use thiserror::Error; -use tokio::sync::{Mutex, MutexGuard}; -use tower::{Service, ServiceExt}; - -#[derive(Error, Debug)] -pub enum DesktopError { - #[error("Axum error:\n{0}")] - Axum(#[from] axum::Error), - #[error("Infallible error")] - Infallible(#[from] std::convert::Infallible), -} - -/// Process requests sent to Tauri (with the `axum://` protocol) and handle them with Axum -/// When an error occurs, this function is expected to panic, which should result in a 500 error -/// being sent to the client, so we let the client handle the error recovering -async fn process_tauri_request( - tauri_request: Request>, - mut router: MutexGuard<'_, Router>, -) -> Result>, DesktopError> { - let (parts, body): (request::Parts, Vec) = tauri_request.into_parts(); - let axum_request: Request = Request::from_parts(parts, body.into()); - - let axum_response: Response = router - .as_service() - .ready() - .await - .map_err(DesktopError::Infallible)? - .call(axum_request) - .await - .map_err(DesktopError::Infallible)?; - - let (parts, body): (response::Parts, Body) = axum_response.into_parts(); - let body: Bytes = to_bytes(body, usize::MAX).await?; - - let tauri_response: Response> = Response::from_parts(parts, body.into()); - Ok(tauri_response) +// Learn more about Tauri commands at https://tauri.app/v1/guides/features/command +#[tauri::command] +fn greet(name: &str) -> String { + format!("Hello, {}! You've been greeted from Rust!", name) } #[cfg_attr(mobile, tauri::mobile_entry_point)] pub fn run() { tauri::Builder::default() - .setup(|app| { - let assets_path: PathBuf = app - .path() - .resolve("assets", BaseDirectory::Resource) - .expect("Assets path should be resolvable"); - - // Adds Axum router to application state - // This makes it so we can retrieve it from any app instance (see bellow) - let router = Arc::new(Mutex::new(app::get_router(&assets_path))); - - app.manage(router); - - Ok(()) - }) - .register_asynchronous_uri_scheme_protocol("axum", move |app, request, responder| { - // Retrieve the router from the application state and clone it for the async block - let router = Arc::clone(&app.state::>>()); - - // Spawn a new async task to process the request - tauri::async_runtime::spawn(async move { - let router = router.lock().await; - match process_tauri_request(request, router).await { - Ok(response) => responder.respond(response), - Err(err) => { - let body = format!("Failed to process an axum:// request:\n{}", err); - responder.respond( - http::Response::builder() - .status(http::StatusCode::BAD_REQUEST) - .header(http::header::CONTENT_TYPE, "text/plain") - .body::>(body.into()) - .expect("BAD_REQUEST response should be valid"), - ) - } - } - }); - }) + .plugin(tauri_plugin_shell::init()) + .invoke_handler(tauri::generate_handler![greet]) .run(tauri::generate_context!()) .expect("error while running tauri application"); } diff --git a/crates/desktop/tauri.conf.json b/crates/desktop/tauri.conf.json index f7d9482..63fdcc5 100644 --- a/crates/desktop/tauri.conf.json +++ b/crates/desktop/tauri.conf.json @@ -1,20 +1,24 @@ { - "productName": "Logiciel Pharma", + "$schema": "https://schema.tauri.app/config/2.0.0-rc", + "productName": "Chrys4lide LGO", "version": "0.0.1", - "identifier": "org.p4pillon.pharma.desktop", + "identifier": "org.p4pillon.chrys4lide.lgo", "build": { "beforeDevCommand": { - "cwd": "../app", - "script": "cargo run" + "cwd": "../../frontend", + "script": "bun run dev" }, - "devUrl": "http://localhost:3000", - "frontendDist": "axum://place.holder/" + "devUrl": "http://localhost:1420", + "beforeBuildCommand": { + "cwd": "../../frontend", + "script": "bun run generate" + }, + "frontendDist": "../../frontend/dist" }, "app": { - "withGlobalTauri": true, "windows": [ { - "title": "Logiciel Pharma", + "title": "Chrys4lide | LG0", "width": 800, "height": 600 } @@ -25,9 +29,6 @@ }, "bundle": { "active": true, - "resources": { - "../app/assets/": "./assets/" - }, "targets": "all", "icon": [ "icons/32x32.png", @@ -37,5 +38,4 @@ "icons/icon.ico" ] } - -} +} \ No newline at end of file diff --git a/frontend/.gitignore b/frontend/.gitignore new file mode 100644 index 0000000..4a7f73a --- /dev/null +++ b/frontend/.gitignore @@ -0,0 +1,24 @@ +# Nuxt dev/build outputs +.output +.data +.nuxt +.nitro +.cache +dist + +# Node dependencies +node_modules + +# Logs +logs +*.log + +# Misc +.DS_Store +.fleet +.idea + +# Local env files +.env +.env.* +!.env.example diff --git a/frontend/README.md b/frontend/README.md new file mode 100644 index 0000000..72aa419 --- /dev/null +++ b/frontend/README.md @@ -0,0 +1,77 @@ +# Nuxt 3 Minimal Starter + +TODO : Faire un vrai README pour `frontend` (Nuxt 3) + +Look at the [Nuxt 3 documentation](https://nuxt.com/docs/getting-started/introduction) to learn more. + +## Setup + +Make sure to install the dependencies: + +```bash +# npm +npm install + +# pnpm +pnpm install + +# yarn +yarn install + +# bun +bun install +``` + +## Development Server + +Start the development server on `http://localhost:3000`: + +```bash +# npm +npm run dev + +# pnpm +pnpm run dev + +# yarn +yarn dev + +# bun +bun run dev +``` + +## Production + +Build the application for production: + +```bash +# npm +npm run build + +# pnpm +pnpm run build + +# yarn +yarn build + +# bun +bun run build +``` + +Locally preview production build: + +```bash +# npm +npm run preview + +# pnpm +pnpm run preview + +# yarn +yarn preview + +# bun +bun run preview +``` + +Check out the [deployment documentation](https://nuxt.com/docs/getting-started/deployment) for more information. diff --git a/frontend/app.vue b/frontend/app.vue new file mode 100644 index 0000000..09f935b --- /dev/null +++ b/frontend/app.vue @@ -0,0 +1,6 @@ + diff --git a/frontend/bun.lockb b/frontend/bun.lockb new file mode 100755 index 0000000000000000000000000000000000000000..ad827d939cdfbe2a8c24927a4b72cf12a1da03db GIT binary patch literal 281048 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 literal 0 HcmV?d00001 diff --git a/frontend/nuxt.config.ts b/frontend/nuxt.config.ts new file mode 100644 index 0000000..e9295ac --- /dev/null +++ b/frontend/nuxt.config.ts @@ -0,0 +1,29 @@ +// https://nuxt.com/docs/api/configuration/nuxt-config +export default defineNuxtConfig({ + compatibilityDate: '2024-04-03', + // Enables the development server to be discoverable by other devices for mobile development + devServer: { host: '0.0.0.0', port: 1420 }, + devtools: { enabled: true }, + // Disable SSR for Tauri + ssr: false, + vite: { + // Better support for Tauri CLI output + clearScreen: false, + // Enable environment variables + // Additional environment variables can be found at + // https://v2.tauri.app/reference/environment-variables/ + envPrefix: ['VITE_', 'TAURI_'], + server: { + // Tauri requires a consistent port + strictPort: true, + hmr: { + // Use websocket for mobile hot reloading + protocol: 'ws', + // Make sure it's available on the network + host: '0.0.0.0', + // Use a specific port for hmr + port: 5183, + }, + }, + } +}) diff --git a/frontend/package.json b/frontend/package.json new file mode 100644 index 0000000..61c34e7 --- /dev/null +++ b/frontend/package.json @@ -0,0 +1,17 @@ +{ + "name": "nuxt-app", + "private": true, + "type": "module", + "scripts": { + "build": "nuxi build", + "dev": "nuxi dev", + "generate": "nuxi generate", + "preview": "nuxi preview", + "postinstall": "nuxi prepare" + }, + "dependencies": { + "nuxt": "^3.13.0", + "vue": "latest", + "vue-router": "latest" + } +} \ No newline at end of file diff --git a/frontend/public/favicon.ico b/frontend/public/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..18993ad91cfd43e03b074dd0b5cc3f37ab38e49c GIT binary patch literal 4286 zcmeHLOKuuL5PjK%MHWVi6lD zOGiREbCw`xmFozJ^aNatJY>w+g ze6a2@u~m#^BZm@8wco9#Crlli0uLb^3E$t2-WIc^#(?t)*@`UpuofJ(Uyh@F>b3Ph z$D^m8Xq~pTkGJ4Q`Q2)te3mgkWYZ^Ijq|hkiP^9`De={bQQ%heZC$QU2UpP(-tbl8 zPWD2abEew;oat@w`uP3J^YpsgT%~jT(Dk%oU}sa$7|n6hBjDj`+I;RX(>)%lm_7N{+B7Mu%H?422lE%MBJH!!YTN2oT7xr>>N-8OF$C&qU^ z>vLsa{$0X%q1fjOe3P1mCv#lN{xQ4_*HCSAZjTb1`}mlc+9rl8$B3OP%VT@mch_~G z7Y+4b{r>9e=M+7vSI;BgB?ryZDY4m>&wcHSn81VH1N~`0gvwH{ z8dv#hG|OK`>1;j7tM#B)Z7zDN?{6=dUal}$e